2017-11-26 8 views
0

私は現在、学校での運動に固執しています。運動は以下の通りです。K平均クラスタリングによるセントロイドの計算と表現

berg2005 [1]に記載されている野生の顔データのサブセットを検討します。 loadmat 機能を使用して、ワイルドカードデータ、データ/ワイルドカードをロードします。各データオブジェクトは、40×40×3 = 4800次元の ベクトルであり、3色40×40ピクセル画像に対応する。 を計算するk-は、K = 10のクラスターでデータのクラスター化を意味します。データセットからのいくつかのランダムな 画像と対応するクラスタ の重心をプロットして、それらの表現方法を確認します。

[1] Tamara L Berg、Alexander C Berg、Jaety Edwards、およびDA Forsyth。誰が写真にいるの?ニューラル情報処理システムの進歩、17:137-144、2005.

ここで私の質問に、どのように1つの画像の重心を計算するのですか?私は現在、顔を表示し、データセットの重心を計算することができます。私が理解できないことは、どの重心が画像4(コードサンプルで使用されている)に対応しているかをどのように知ることができるかです。データセットX全体、またはX [4]全体の重心を計算する必要がありますか?どのようなステップが必要ですか?「対応するクラスタ重心をプロットしてどのように表現されているかをプロット」するにはどうすればよいですか?

import scipy.io as spio 
import sklearn.cluster as cl 
import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.pyplot import imshow 

faces = spio.loadmat('Data/wildfaces.mat',squeeze_me=True) 
X = faces['X'] 

Y = cl.k_means(X,10) 
centroids = Y[0] 
clusters = Y[1] 

imshow(np.reshape(X[4,:],(3,40,40)).T) 
plt.show() 

答えて

0

すでに重心があります。クラスタごとに1つ。

計算する必要はなく、表示するだけです。

の内容を確認してください。

+0

あなたはありがとうございます。これを振り返ってみると、実際には明らかです。 – Rodi

関連する問題