【问题标题】:MBkmeans partial fit and select cluster memberMBkmeans 部分拟合并选择集群成员
【发布时间】:2014-02-16 14:28:18
【问题描述】:

我有 18997 个文档(文档可以大于 100K)进行聚类并将其分成块(每个 5000 个文档)。 然后,我用 MBKmeans 对每个块进行parttail_fitted。我按簇选择文档,如 each_chunk[labels == e]。未选择任何文档。如何按集群选择文档?

[update #1] 我应该如何根据每个批次配置 MBKmeans? (总文档=100K,每批=5000 文档)

[更新 #2] 是否有使用 MBKmeans parital_fit 选择集群成员的示例?

提前致谢。

这是我的代码:

    def selectDocsByCluster(self, chunks):
        centroids = self.kmeans.cluster_centers_
        labels = self.kmeans.labels_

        if self.verbose:
            print 'labels:', len(labels.tolist())

        checker_docs_count = 0

        collected_data = dict()

        for e, centroid in enumerate(centroids):
            members = labels == e

            for each_chunk in chunks:
                docs_by_cluster = each_chunk[members]

                if e in collected_data.keys():
                    collected_data[e].extend(docs_by_cluster.tolist())
                else:
                    collected_data.update({e:docs_by_cluster.tolist()})

            if self.verbose:
                print 'Members:', len(members.tolist()), type(members)

            total_selected = len(collected_data.get(e) or [])
            print 'clusterID:', e, "Total Docs:", total_selected

            checker_docs_count += total_selected

        print 'check docs count:', checker_docs_count

详细代码是here

【问题讨论】:

    标签: python machine-learning cluster-analysis scikit-learn k-means


    【解决方案1】:

    最后,我通过阅读sci-kit.learn API 并进行更多研究得到了答案。 我写了代码并注意到了答案。

        def partialFitChunks(self, chunks):
    
            """ MBKmean partial fit vectorized chunks."""
    
            for e, each_chunk in enumerate(chunks):
                if self.verbose:
                    print 'current chunkID:', e
                    print each_chunk
                    print each_chunk.tolist()[:10]
    
                self.kmeans.partial_fit(each_chunk)
                if self.verbose:
                    print 'no. of label:', len(self.kmeans.labels_.tolist() or [])
                    print 'clustered docs:', self.kmeans.counts_
                    print 'total docs processed:', sum(self.kmeans.counts_.tolist())
    
                predicted = self.kmeans.predict(each_chunk)
                if self.verbose:
                    predicted_tolist = predicted.tolist()
                    print 'Total predicted docs:', len(predicted_tolist)
                    counter = Counter(predicted_tolist)
                    print 'By Cluster:',sortByIndex(counter.items(), 0, True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-28
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2017-01-29
      • 2015-04-12
      • 2023-03-18
      相关资源
      最近更新 更多