我的数据是轻尾的,两个极端都有几个异常值。我正在使用Birch进行数据聚类,在此之前我使用RobustScaler转换数据,然后使用PCA来减小维度。但是我收到了一个MemoryError:
这对我来说有点不寻常,因为当我尝试不同的转换方法只映射来自[0,1]的原始数据时,Birch算法可以工作。
我阅读了SKLearn的Birch文档并介绍了partial_fit()函数,但是我没有足够的细节来了解它的目的以及如何使用它。文档简单地说:'在线学习。防止从头开始重建CFTree。
看一下源代码。
当您有权访问源时,不要依赖Web论坛上的人来猜测函数的作用。原因很简单:它可能因版本而异。对于不同的版本,我可以给你一个正确的答案......
你有没有立刻给整个数据打电话partial_fit
?这不是你应该做的。一次只处理一批。
旧数据仍然可以访问而不是垃圾收集(例如非转换数据),但也可能由于参数不同而导致内存问题。如果你仔细研究Birch文件,你会发现它比我们今天的Python语言更接近对内存的控制,并且在现代操作系统上这个详细的级别是不可复制的。
但您应该考虑的主要问题是以下两个: