0

私はこのような配列を持っています:

1003    1007    0.0140589588522423
1059    1185    0.0336635172202602
1003    1093    0.0403056531253910
1003    1111    0.0417787840566580
1059    1127    0.0437157438475326
1082    1092    0.0532154519263457
1076    1185    0.0584688899071887
1003    1129    0.0585907987209575
1003    1045    0.0626826958352425
1003    1070    0.0660757861128676
1003    1014    0.0662929607751338

最初の列はポイント 1 の名前、2 番目の列はポイント 2 の名前、3 番目の列は の範囲内のすべての 2 つのポイント間の距離です[0, 1]。3 番目の列の値が大きい場合は距離が大きくなり、3 番目の列の値が小さい場合は、言及されたポイント間の距離が小さくなります。このデータは 20,000 ポイントを超えています。ここで、ポイントの距離または仮想位置をよりよく理解するために、パターン (グラフ) とより多くの情報が必要です。たとえば、ポイントの近くでクラスターをまとめ、クラスターの近くでクラスターをさらに大きなクラスターにクラスター化します。MATLAB を使用してこれを行うにはどうすればよいですか? すべてのポイントのペアについてこれらのデータがあります。

4

1 に答える 1

1

ほぼ正確な構成のためのより簡単なソリューションの 1 つは、cmdscale()( https://www.mathworks.com/help/stats/cmdscale.html ) を使用して、距離の制約を考慮して潜在的な構成を見つけることです。

点間の距離のベクトルを指定すると、は最小化された次元の点の行列をcmdscale()返します。n*pnpp

データをn*n各ポイント間の距離のマトリックスに再編成する必要がありますが、このタイプのデータの適切なグラフィック表現を取得するには、とにかく実行する必要があります.

distance = [0.0 0.1 0.2;
            0.1 0.0 0.3;
            0.2 0.3 0.0];
Y = cmdscale(distance); 
plot(ones(3,1),Y,'o'); % In this case my solution is 1 dimensional

出力

20,000 個のデータ ポイントの場合、より高次の次元が必要になることは間違いありません (データが既に 2D または 3D に制限されていることを願っています)。3 次元に制限されていない場合、構成行列をY減らす必要があり (ヘルプについてはhttps://www.mathworks.com/help/stats/cmdscale.htmlを参照してください)、ある程度の精度が失われます (ただし、これはすべての場合に当てはまります)。スケーリングされた次元データでの正確な表現)。

より確率的な表現に興味がある場合は、動的リンクの物理/重力を利用して重みに基づいてノードをまとめるネットワーク エンジンでより多くの成功を収めていますが、MATLAB で動的に構築されたものは見たことがありません。

于 2016-11-23T22:40:57.560 に答える