在SKLearn的Birch聚类中,partial_fit()到底是什么,可以在非常大的数据集中使用吗?

时间:2019-02-19 02:00:03

标签: python pandas scikit-learn cluster-analysis hierarchical-clustering

我的数据是轻尾的,在两个极端都有几个异常值。我先使用Birch对数据进行聚类,然后再使用RobustScaler转换数据,然后使用PCA减小尺寸。但是我收到一个MemoryError: enter image description here

这对我来说有点不寻常,因为当我尝试另一种仅映射[0,1]中的原始数据的转换方法时,Birch算法起作用。

我阅读了SKLearn的Birch文档并使用了partial_fit()函数,但是那里没有足够的细节让我了解其目的和使用方法。文档只是说:“在线学习。防止从头开始重建CFTree。'

1 个答案:

答案 0 :(得分:0)

查看源代码。

当您访问源时,不要依赖网络论坛上的人来猜测该功能的作用。原因很简单:它可能因版本而异。因此,对于其他版本,我可能会给您正确的答案...

您是否一次调用了整个数据上的partial_fit?那不是你应该做的。一次只能处理一批。

内存问题可能是由于仍然可以访问并且没有垃圾回收(例如未转换的数据)的旧数据引起的,还可能是由于参数不同所致。如果您仔细研究Birch论文,您会发现它期望对内存的控制要比现今的Python等语言更紧密,并且在现代操作系统上无法重现。 >

但是您应该考虑的主要问题是以下两个:

  1. 此数据上的Birch聚类质量真的足够好吗?还是您正在努力解决错误的问题?
  2. 如果仅使用50%的“大”数据,质量会降低多少?从统计上来说不重要...该方法基于聚合,并且此类聚合的精度随sqrt(n)的增长而增加...也就是说,添加越来越多的数据都无关紧要。