2016-08-02 7 views
1

私はテキストデータを扱うことでかなり新しいです。kmeansでtfidfマトリックスで説明されている分散をどのように把握できますか?

私は約30万のユニークな製品名のデータフレームを持っており、kを使用しようとしているのは、同様の名前を一緒にクラスタ化することを意味します。私はsklearnのtfidfvectorizerを使って名前をベクトル化し、tf-idf行列に変換しました。

次は、私は、kは分散を計算しようとすると5から、私はエラーのスタックの午前10

までのクラスタ数とTF-IDF行列に意味走っD_kValueError: setting an array element with a sequence.

私が欲しいのための説明しました説明された分散をプロットするv。クラスタの数をプロットするので、私は肘がどこにあるかを区別することができます。

私はあなたが適切な配列に(スパースである)あなたのtfidf_matrixを変換する必要がありhttps://datascience.stackexchange.com/questions/6508/k-means-incoherent-behaviour-choosing-k-with-elbow-method-bic-variance-explain

from sklearn.feature_extraction.text import TfidfVectorizer 
#define vectorizer parameters 

tfidf_vectorizer = TfidfVectorizer(use_idf=True, 
            stop_words = 'english', 
            ngram_range=(2,4)) 

%time tfidf_matrix = tfidf_vectorizer.fit_transform(unique_names) 

# clustering with kmeans 
from sklearn.cluster import KMeans 

num_clusters = range(5,10) 

%time KM = [KMeans(n_clusters=k).fit(tfidf_matrix) for k in num_clusters] 


from scipy.spatial.distance import cdist, pdist 

centroids = [k.cluster_centers_ for k in KM] 
D_k = [cdist(tfidf_matrix, cent) for cent in centroids] 

答えて

2

を参照しています。

D_k = [cdist(tfidf_matrix.toarray(), cent) for cent in centroids] 

これは私に役立ちました。

関連する問題