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 : 获取文本属于哪个簇的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 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