gpt4 book ai didi

python - MiniBatchKMeans.fit 和 MiniBatchKMeans.partial_fit 之间的区别

转载 作者:行者123 更新时间:2023-12-03 14:49:23 24 4
gpt4 key购买 nike

我对 sklearn.cluster.MiniBatchKMeans 感兴趣作为使用庞大数据集的一种方式。无论如何,我对 MiniBatchKMeans.partial_fit() 之间的区别有点困惑。和 MiniBatchKMeans.fit() .

关于 fit() 的文档指出:
通过将 X 分 block 为小批量来计算 X 上的质心。

而关于 partial_fit() 的文档指出:
更新 k 意味着对单个 mini-batch X 的估计。

所以,据我了解fit()将数据集拆分为用于训练 k 均值的数据 block (我猜 batch_size 的参数 MiniBatchKMeans() 指的是这个),而 partial_fit()使用传递给它的所有数据来更新中心。术语“更新”可能看起来有点模棱两可,表示是否应该执行初始训练(使用 fit()),但从 documentation 中的示例来看这不是必需的(我也可以在开头使用partial_fit())。
partial_fit() 是真的吗?将使用传递给它的所有数据,无论大小或数据大小是否绑定(bind)到 batch_size作为参数传递给 MiniBatchKMeans构造函数?如果 batch_size设置为大于实际数据大小的结果与标准 k-means 算法相同(我猜在后一种情况下效率可能会有所不同,尽管由于架构不同)。

最佳答案

TL;博士partial_fit用于在线聚类是 fit用于离线,但我认为 MiniBatchKMeans 的 partial_fit方法有点粗糙。
长解释
我从 repo 中挖掘了旧的 PR,发现了 this one ,似乎是这个实现的第一次提交,它提到这个算法可以实现partial_fit方法作为在线聚类方法(遵循在线 API 讨论)。
以及 BIRCH实现,该算法使用 fit作为一次性离线集群和partial_fit作为在线聚类。
但是,我做了一些比较 ARI 的测试。通过在整个数据集中使用 fit 与使用 partial_fit 和 fit in chunks 比较结果标签,并且似乎没有得到任何结果,因为 ARI 结果非常低(~0.5),并且通过更改初始化显然适合分 block 击败 partial_fit,这没有意义。你可以找到我的笔记本here .
所以我的猜测是,基于 this response在公关中:

I believe that this branch can and should be merged.

The online fitting API (partial_fit) probably needs to mature, but Ithink that it is a bit out of scope of this work. The corecontribution, that is a mini-batch K-means, is nice, and does seem tospeed up things.


是不是自 PR 以来实现没有太大变化,partial_fit 方法仍然有点粗糙,从 2011 年到现在的两个实现都发生了变化(与发布标签相比),但是它们都调用了函数 _mini_batch_step一次 partial_fit (没有详细信息)并在 fit 中多次调用(带有详细信息)。

关于python - MiniBatchKMeans.fit 和 MiniBatchKMeans.partial_fit 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53091623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com