我处理文本数据时相当新。
我有一个大约300,000个唯一产品名称的数据框,我正在尝试使用k方法将相似的名称聚集在一起。我使用了sklearn的tfidfvectorizer来对名称进行矢量化并转换为tf-idf矩阵。
接下来,我在tf-idf矩阵上运行k表示,簇的数量从5到10不等。
我在尝试计算D_k
ValueError: setting an array element with a sequence.
所解释的差异时遇到错误
我想绘制方差解释v。群集数量图,以便我可以区分肘部位置。
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]
答案 0 :(得分:2)
您应该将tfidf_matrix
(稀疏)转换为正确的数组。
D_k = [cdist(tfidf_matrix.toarray(), cent) for cent in centroids]
这对我有用。