【问题标题】:What really is partial_fit() in SKLearn's Birch Clustering, and can it be used in very large datasets?SKLearn 的 Birch Clustering 中的 partial_fit() 到底是什么,它可以用于非常大的数据集吗?
【发布时间】:2019-07-12 11:01:45
【问题描述】:

我的数据是轻尾的,在两个极端都有几个异常值。我正在使用 Birch 对数据进行聚类,在此之前我使用 RobustScaler 来转换数据,然后使用 PCA 来减少维度。但是我收到一个 MemoryError:

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

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

【问题讨论】:

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


    【解决方案1】:

    查看源代码。

    当您可以访问源代码时,不要依赖网络论坛上的人来猜测函数的作用。原因很简单:它可能因版本而异。所以我可以给你一个正确的答案,不同的版本......

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

    内存问题可能是由于旧数据仍可访问且未进行垃圾收集(例如未转换的数据),也可能是由于参数不同。如果您仔细研究 Birch 论文,您会发现它对内存的控制比我们在今天的 Python 等语言中更紧密,并且在现代操作系统上无法重现这种详细程度。 p>

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

    1. Birch 聚类在此数据上的质量是否真的足够好?还是您在努力解决错误的问题?
    2. 如果只使用 50% 的“大”数据,质量会下降多少?统计上应该没关系...该方法基于聚合,并且此类聚合的精度随着 sqrt(n) 的增长而增长...即,添加越来越多的数据并不重要。

    【讨论】:

    • 您好感谢您的评论,我还没有使用 partial_fit(),图像上显示的结果基于 Birch [没有 partial_fit()]。我想知道 partial_fit() 是否可用于扩展桦木集群,即使手头有源代码,它似乎运行批次的迭代,但再次听到首先使用此功能的人的建议仍然是件好事手。
    猜你喜欢
    • 2016-08-23
    • 2022-01-03
    • 2022-01-22
    • 2016-06-15
    • 2023-03-19
    • 1970-01-01
    • 2011-04-17
    • 2019-11-28
    • 2017-05-11
    相关资源
    最近更新 更多