Python 3.x 测试无监督KMeans
我正在使用on text clustering来查找任何关于啤酒评论的有趣分组。到目前为止,它对我来说效果很好,但是当涉及到测试或找到正确的参数时,我尝试通过不同的集群编号循环:Python 3.x 测试无监督KMeans,python-3.x,scikit-learn,cluster-analysis,k-means,Python 3.x,Scikit Learn,Cluster Analysis,K Means,我正在使用on text clustering来查找任何关于啤酒评论的有趣分组。到目前为止,它对我来说效果很好,但是当涉及到测试或找到正确的参数时,我尝试通过不同的集群编号循环: for clusters in range(3, 10): km = KMeans(n_clusters = clusters, init="k-means++", max_iter=100, n_init=1) km.fit(vectorizer_fit) order_centroids =
for clusters in range(3, 10):
km = KMeans(n_clusters = clusters, init="k-means++", max_iter=100, n_init=1)
km.fit(vectorizer_fit)
order_centroids = km.cluster_centers_.argsort()[:, ::-1]
for i in range(clusters):
print("Cluster %d:" %i, end="")
for ind in order_centroids[i, :10]:
print(" %s"%terms[ind],end=",")
print()
它有助于剔除一些明显的选择(集群6+)开始变得怪异,或包含啤酒的名称:
Cluster 1: julius, th, treehouse, ego, alter, papaya, dipa, melon, canned, dankness
Cluster 7: citra, farmstead, dipa, hf, apa, passion, abner, nelson, mosaic, papaya
然后尝试使用不同的max/min_df:
for x in range(40):
tfidf_vector = TfidfVectorizer(max_df = (.8-(x * .01)), min_df = .2, \
stop_words = "english", use_idf = True)
tfidf_matrix = tfidf_vector.fit_transform(documents)
km = KMeans(5)
km.fit(tfidf_matrix)
order_centroids = km.cluster_centers_.argsort()[:, ::-1]
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print("With max_df @ %d% " % ()(.80 - (x*.01))*100))
for i in range(5):
print("cluster %d words: " % i, end = "")
for ind in order_centroids[i, :10]: #top N number of words
print("%s "% vocab.ix[ind].values, end = ",") #lookup centroid number as vocab index
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
这有助于找到消除大多数停止词的好方法:
With max_df @ 80%: ['the'] ,['here'] ,['a'] ,['true'] ,['roasted'] ,['imparted'] ,['some'] ,['through'] ,['beer'] ,['such']
With max_df @ 60%: ['do'] ,['coffee'] ,['is'] ,['alcohol'] ,['retention'] ,['dry'] ['with'] ,['regular'] ,['little'] ,['speedway']
我可以假设我可以试着同时通过这两个循环,但在某个时候,阅读它并做出人类对最好的判断似乎不是…计算机科学家的方式。有没有办法评估无监督的方法,而不考虑确切的业务问题?我没有代码,但你可以看看这篇归档文件:及其参考资料 以及sklearn上dbscan算法的演示代码 我在寻找无监督聚类评估指标时遇到了这些问题
编辑:这篇文章也很有用-我没有代码,但你可以看看这篇归档文件:及其参考资料 以及sklearn上dbscan算法的演示代码 我在寻找无监督聚类评估指标时遇到了这些问题
编辑:这篇文章也很有用-问题是,在我看来,k-means在文本上根本不起作用。它对异常值不稳定,文本数据中充满了异常值。单词表对人类来说总是很好的,因为我们很善于尝试“理解”,即使是胡言乱语。。。另见:“阅读茶叶:人类如何解读主题模型”我刚刚有了一些空闲时间阅读了那篇论文,现在我更好地理解了定性挖掘任务缺乏定量指标。然而,这篇文章让我觉得LDA是最好的,而不是提出一个解决方案。我没有带走其他东西吗?另一个可能是这很难,而且可能根本不起作用(但在看最上面的词时看起来“没问题”)谢谢你的建议,我正试图找到一些有趣的项目来构建简历,所以我一定会将这些观点纳入我的结论文件中。去学习LDA!问题是,在我看来,k-means在文本中根本不起作用。它对异常值不稳定,文本数据中充满了异常值。单词表对人类来说总是很好的,因为我们很善于尝试“理解”,即使是胡言乱语。。。另见:“阅读茶叶:人类如何解读主题模型”我刚刚有了一些空闲时间阅读了那篇论文,现在我更好地理解了定性挖掘任务缺乏定量指标。然而,这篇文章让我觉得LDA是最好的,而不是提出一个解决方案。我没有带走其他东西吗?另一个可能是这很难,而且可能根本不起作用(但在看最上面的词时看起来“没问题”)谢谢你的建议,我正试图找到一些有趣的项目来构建简历,所以我一定会将这些观点纳入我的结论文件中。去学习LDA!