2017-08-08 10 views
1

のテキストクラスタリングの後に私はPythonでテキストデータのセットにテキストクラスタリングを行っています。基本的に、私は、TF IDFスコアを使用して、ちょうどそのような関数kmeansアルゴリズムに結果行列を適用します。 同一クラスタのPython

vect = TfidfVectorizer(min_df=100,stop_words=sw) 

dtm = vect.fit_transform(df) 
l=vect.get_feature_names() 

k = 15 
model = MiniBatchKMeans(n_clusters=k) 
model.fit(dtm) 

order_centroids = model.cluster_centers_.argsort()[:, ::-1] 
terms = vect.get_feature_names() 
for i in range(k): 
     print("Cluster %d:" % i, end='') 
     for ind in order_centroids[i, :100]: 
      print(' %s' % l[ind], end='') 
     print() 

続いて、次を実行した後、私は(ほぼ完全に同じ単語に関してその中で)15個の同一のクラスタを得ます。私はLSAメソッドを使って正規化を試みましたが、ほとんど同じです。

私が間違って何をやっているし、それがどのように固定することができますか?

+1

あなたがデータをアップロードすることができ、このような問題を回避するために

一般的な方法は次のようにzero meanunit varianceにあなたの機能をstandardizeするのですか?あなたはsklearnのどのバージョンを使用していますか? – sera

答えて

1

私の推測では、あなたの機能はdtmで一部の列が他よりも高い平均を中心としたディストリビューションが含まれていることを意味し、標準化されていないということでしょう。したがって、クラスタに関連する機能を抽出するために使用するソートは、これらの機能に間違いをもたらします。

dtm_standardized = (dtm - dtm.mean(axis=0))/dtm.std(axis=0) 

かのように:

dtm_standardized = sklearn.preprocessing.scale(dtm) 
関連する問題