2016-11-19 11 views
0

私はkmeans関数を使って2つの部分にクラスタ化した525のデータを持っています。私はテストデータを持っているので、それをクラスタに適切に入れたいと思います。そのためには、テストデータの距離と両方のクラスタの重心を測定する必要があります。最短距離とは、データがそのクラスタにあることを意味します。テストデータをmatlabのk平均クラスタに分割する

どうすればよいですか?

PS:データには9個の入力があり、各データは9個の値で構成されています。

for n = 1:174 
    for k = 1:9 
    testclust1(n,k) = C(1,k)-TEST(n,k) 
    testclust2(n,k) = C(2,k)-TEST(n,k) 
end 
if testclust1(1,:) <= testclust2(1,:) 
%then cluster 1 else cluster 2 
end 

それについての任意のアイデアを:ここで

は、私が試してみました何ですか?

+1

これは擬似コードですか?または何? 'C'、' TEST'、 'testclust'とは何ですか? – EBH

+0

距離関数、センダイド計算はどこですか? –

答えて

0

あなたがpdist2を使用することができます。

dist_to_centers = pdist2(C, TEST); 
dist_to_centers

を中心に各テストポイントの距離と2バイ174行列です。手動dist_to_centersを計算したい場合は

idx_of_test_points_in_first = find(dist_to_centers(1,:)<=dist_to_centers(2,:)); 
idx_of_test_points_in_second = find(dist_to_centers(1,:)>dist_to_centers(2,:)); 

あなたはを使用することができます。

dist_to_centers = bsxfun(@minus, permute(C,[1 3 2]), permute(TEST,[3 1 2])); 
dist_to_centers = sum(dist_to_centers.^2, 3); 
関連する問題