首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MiniBatchKMeans.fit与MiniBatchKMeans.partial_fit的差异

MiniBatchKMeans.fit与MiniBatchKMeans.partial_fit的差异
EN

Stack Overflow用户
提问于 2018-10-31 20:39:40
回答 1查看 1.1K关注 0票数 7

我对sklearn.cluster.MiniBatchKMeans感兴趣,因为它是一种使用大型数据集的方法。无论如何,我对MiniBatchKMeans.partial_fit()MiniBatchKMeans.fit()之间的区别感到有点困惑。

关于fit()的文档说明:

计算X上的质心,把它分块成小批。

而有关partial_fit()的文档指出:

更新k表示对单个小批X的估计。

因此,据我所知,fit()将数据集分解为它训练的数据块(我猜batch_size of MiniBatchKMeans()的论点指的是这个),而partial_fit()使用传递给它的所有数据来更新中心。术语"update“似乎有点模棱两可,表示应该已经执行或不应该执行初始培训(使用fit()),但是从文档中的示例来看,这是不必要的(我也可以在一开始使用partial_fit() )。

partial_fit()是否会使用传递给它的所有数据,而不管大小如何,还是将数据大小绑定到batch_size作为参数传递给MiniBatchKMeans构造函数?另外,如果将batch_size设置为大于实际数据大小,则结果与标准k-means算法相同(我猜,在后一种情况下,效率可能会有所不同,尽管由于不同的体系结构所致)。

EN

回答 1

Stack Overflow用户

发布于 2020-10-06 16:10:46

TL;DR

partial_fit是用于在线集群的,fit是用于脱机的,但是我认为MiniBatchKMeans的partial_fit方法有点粗糙。

长篇解释

我从回购中找出了旧的PR,发现了这一个,这似乎是该实现的第一次提交,它提到该算法可以将partial_fit方法实现为在线聚类方法(在在线API讨论之后)。

桦树实现中,该算法采用fit作为一次离线聚类,partial_fit作为在线聚类。

然而,我做了一些测试,通过在整个数据集中使用fit与使用partial_fit和fit块来比较结果标签的partial_fit,而且似乎没有取得任何进展,因为ARI的结果非常低(~0.5),并且通过更改初始化显然是fit块的节拍partial_fit,这是没有意义的。你可以找到我的笔记本这里

因此,我的猜测是,基于这一反应中的公关:

我相信这个部门可以而且应该合并。 在线拟合API (partial_fit)可能需要成熟,但我认为它有点超出了这项工作的范围。核心贡献,那是一个小批K-的意思,是好的,并似乎加快了一些事情。

就是自从那个PR之后,实现没有多大变化,而且partial_fit方法仍然有点粗糙,这两个实现从2011年开始已经改变了(与release相比),但是它们都在partial_fit中调用了函数_mini_batch_step一次(没有详细信息),并且在fit中调用了多次(使用详细信息)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53091623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档