【发布时间】:2016-12-08 07:17:11
【问题描述】:
我对处理文本数据还很陌生。
我有一个包含大约 300,000 个唯一产品名称的数据框,我正在尝试使用 k 方法将相似的名称聚集在一起。我使用 sklearn 的 tfidfvectorizer 对名称进行矢量化并转换为 tf-idf 矩阵。
接下来我在 tf-idf 矩阵上运行 k 均值,簇数从 5 到 10 不等。
我在尝试计算为 D_k ValueError: setting an array element with a sequence. 解释的方差时遇到了错误
我想绘制解释的方差与聚类数的关系图,以便区分肘部的位置。
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]
【问题讨论】:
标签: python scikit-learn k-means tf-idf