根据先前的聚类集预测新数据

时间:2019-05-04 15:21:45

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

我有大量的二进制数据需要集群。例如

[[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中的其他聚类算法确实具有诸如KMeans之类的predict(),但根据我的研究,在处理二进制数据时,这不是一个很好的算法。

所以我被困住了。我不想每次新数据到达时都运行聚类,因为层次算法可以很好地处理大量数据,但是我不确定使用哪种算法可以处理二进制数据并提供预测()功能。

有没有一种方法可以转换二进制数据,以便其他算法(例如KMeans)可以提供有用的输出?还是有一个完全不同的算法可以在scikit中实现而无法实现?我不依赖scikit,因此切换不是问题。

1 个答案:

答案 0 :(得分:0)

要进行预测时,请使用分类器,而不要使用聚类。

在这里,最合适的分类器可能是1NN分类器。出于性能原因,我还是选择DT或SVM。