【发布时间】:2019-09-22 20:05:21
【问题描述】:
我有大量需要聚类的二进制数据。例如
[[0 1 1 0 ... 0 1 0 1 ],
[1 0 1 1 ... 0 0 1 1 ],
...
[0 0 1 0 ... 1 0 1 1 ]]
据我所知,二进制数据的最佳聚类算法是分层的,例如凝聚聚类。所以我使用 scikit 实现了它。
我有一个非常大的数据集,其中不断有新数据出现,我想将这些数据聚集到以前聚集的组中。所以我的想法是对现有数据进行随机抽样,在其上运行 AgglomerativeClustering 并使用 joblib 将结果保存到文件中。
然后当一组新数据到达时,加载之前的集群并调用 predict() 来确定它会落在哪里。这几乎就像我正在训练一个类似于分类器但没有标签的集群。问题是 AgglomerativeClustering 没有 predict() 方法。 scikit 中的其他聚类算法确实有 predict(),例如 KMeans,但根据我的研究,这不是处理二进制数据时使用的好算法。
所以我被困住了。我不想每次新数据到达时都运行聚类,因为分层算法可以很好地处理大量数据,但我不确定使用哪种算法可以处理二进制数据并提供预测() 功能。
有没有一种方法可以转换二进制数据,以便其他算法(如 KMeans)可以提供有用的输出?或者有没有在 scikit 中实现的完全不同的算法可以工作?我没有绑定到 scikit,所以切换不是问题。
【问题讨论】:
-
我个人认为,如果您尝试缩写它,您的问题会更容易阅读(和回答)
标签: python machine-learning scikit-learn cluster-analysis