K-means Clustering of text data : 获取文本属于哪个簇

Posted

技术标签:

【中文标题】K-means Clustering of text data : 获取文本属于哪个簇【英文标题】:K-means Clustering of text data : Get which cluster does the text belong to 【发布时间】:2015-09-21 11:18:47 【问题描述】:

我正在使用 Python (scikit-learn) 中的 K-Means 对文本数据进行聚类。 如何获取线路所属的集群?

示例: data=["红色、黄色和蓝色是颜色","冰淇淋是我最喜欢的食物","你现在也可以买到草莓味的冰淇淋","天空是蓝色的"]

在使用 n_clusters=2 执行 K-Means 后,我预计会形成两个集群。

“红色、黄色和蓝色是颜色”、“天空是蓝色”在一组中,“冰淇淋是我最喜欢的食物”、“你现在也可以买到草莓味冰淇淋”在另一组中。

我如何得到这个,即哪条线在哪个集群中?

K-means 代码:

vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(data)
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=500,  n_init=20)
model.fit(X)

【问题讨论】:

【参考方案1】:

尝试使用predict 函数。

例子-

model.predict(X)

来自documentation -

预测(X)

预测 X 中每个样本所属的最近聚类。

在向量量化文献中,cluster_centers_被称为码本,predict返回的每个值都是码本中最接近的码的索引。

参数: X:类数组,稀疏矩阵,形状= [n_samples,n_features] 要预测的新数据。

返回: 标签:数组,形状 [n_samples,] 每个样本所属簇的索引。

这似乎返回了每个样本所属的簇的索引数组。

也许你也可以使用 -fit_predict() 函数。

您可以使用属性 - cluster_centers_ 获取聚类中心,在您的情况下 - model.cluster_centers_ 和每个样本的标签 - model.labels_

【讨论】:

以上是关于K-means Clustering of text data : 获取文本属于哪个簇的主要内容,如果未能解决你的问题,请参考以下文章

[ML L9] Clustering (K-MEANS)

是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

COMP9313 Week 7 Product Quantization and K-Means Clustering

k均值聚类算法(k-means clustering algorithm)

Scikit Learn K-means Clustering & TfidfVectorizer:如何将具有最高 tf-idf 分数的前 n 项传递给 k-means