gpt4 book ai didi

python - 如何用 kmeans 计算 tfidf 矩阵中解释的方差?

转载 作者:太空宇宙 更新时间:2023-11-04 03:08:45 28 4
gpt4 key购买 nike

我对处理文本数据还很陌生。

我有一个包含大约 300,000 个唯一产品名称的数据框,我正在尝试使用 k 均值将相似的名称聚集在一起。我使用 sklearn 的 tfidfvectorizer 对名称进行矢量化并转换为 tf-idf 矩阵。

接下来,我在簇数从 5 到 10 不等的 tf-idf 矩阵上运行 k 均值。

我在尝试计算为 D_k ValueError: setting an array element with a sequence 解释的方差时遇到错误。

我想绘制方差解释与聚类数量图,以便我可以区分肘部的位置。

我正在引用 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]

最佳答案

您应该将您的 tfidf_matrix(它是稀疏的)转换为适当的数组。

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

这对我有用。

关于python - 如何用 kmeans 计算 tfidf 矩阵中解释的方差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38728828/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com