如何使用Kmeans进行分类

2024-05-18 02:53:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉聚类和K-means算法,我想把一些句子分为两类。如果我有以下句子:

 sentences =  ["I didn't enjoyed the film", "the weather is nice", "The food was great last night", "our dog if very friendly"]

如何使用kmeans将它们分为两个集群?我知道我必须使用model = KMeans(init="random",n_clusters=2,random_state=42),但我不知道如何才能使句子更好地应用于它们。另外,我如何在结尾处打印句子及其所属的簇号?非常感谢


Tags: the算法foodissentences聚类randommeans
2条回答

K-means算法适用于数字数据,因此处理文本时的关键步骤是将文本转换为可用于聚类的数字表示

有许多方法可以将文本表示为数字(从简单的字数到复杂的算法),选择取决于您的时间和经验

简单步骤如下:

  • 文本预处理(去除坏字符)
  • 文本矢量化(将文本转换为数字)
  • 分类(你的K-均值步骤)

我建议阅读一篇教程,因为在聚类之前有很多步骤会对结果产生很大的影响,例如文本清理和向量化,这些步骤可以更好地深入进行

如果你想快点完成的话

from sklearn.cluster import KMeans
from sklearn.feature_extraction.text import TfidfVectorizer

sentences =  ["I didn't enjoyed the film", "the weather is nice", "The food was great last night", "our dog if very friendly"]
vectorizer = TfidfVectorizer(stop_words='english',
                             use_idf=True)

X = vectorizer.fit_transform(sentences)
km = KMeans(n_clusters=2)
km.fit(X)
print(list(zip(sentences, km.labels_)))

这会聚集在一起,但由于单词数量较少,它可能不会显示任何有趣的内容

相关问题 更多 >