我正在使用scikit-learn。我想聚集一个6GB的文档数据集并找到文档集。
我只有4Gb内存。有没有办法让k-means在scikit-learn中处理大型数据集?
谢谢,如果您有任何问题,请与我们联系。
答案 0 :(得分:7)
将MiniBatchKMeans
与HashingVectorizer
一起使用;这样,您可以在数据的单次传递中学习集群模型,在您进行或第二次传递时分配集群标签。有example script演示了MBKM。
答案 1 :(得分:1)
群集本身并不是定义明确的问题(“良好的”群集结果取决于您的应用),而k-means算法仅根据随机初始化标准提供本地最优解决方案。因此,我怀疑从数据集的随机2GB子样本聚类中得到的结果与在整个6GB上聚类的结果在质量上是不同的。我当然会尝试将简化数据集上的聚类作为第一个调用端口。接下来的选项是更智能地进行子采样,或者使用不同的子集进行多次训练,并在多次运行中进行某种选择/平均。