Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 测试无监督KMeans_Python 3.x_Scikit Learn_Cluster Analysis_K Means - Fatal编程技术网

Python 3.x 测试无监督KMeans

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 =

我正在使用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 = 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!