私はテキストデータを扱うことでかなり新しいです。kmeansでtfidfマトリックスで説明されている分散をどのように把握できますか?
私は約30万のユニークな製品名のデータフレームを持っており、kを使用しようとしているのは、同様の名前を一緒にクラスタ化することを意味します。私はsklearnのtfidfvectorizerを使って名前をベクトル化し、tf-idf行列に変換しました。
次は、私は、kは分散を計算しようとすると5から、私はエラーのスタックの午前10
までのクラスタ数とTF-IDF行列に意味走っD_k
ValueError: 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]