【聚类算法】MiniBatchKMeans算法

MiniBatchKMeans相比KMeans增加了更多参数,如n_clusters指定k值,max_iter设定最大迭代次数,n_init用于多次运行并采样不同数据集初始化,batch_size决定采样集大小影响聚类效果,init选择初始质心方式,init_size设定质心候选样本数,reassignment_ratio控制质心重分配比例,max_no_improvement表示连续未改善聚类效果的次数限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

MiniBatchKMeans类主要参数

    MiniBatchKMeans类的主要参数比KMeans类稍多,主要有:

    1) n_clusters: 即我们的k值,和KMeans类的n_clusters意义一样。

    2)max_iter:最大的迭代次数, 和KMeans类的max_iter意义一样。

    3)n_init:用不同的初始化质心运行算法的次数。这里和KMeans类意义稍有不同,KMeans类里的n_init是用同样的训练集数据来跑不同的初始化质心从而运行算法。而MiniBatchKMeans类的n_init则是每次用不一样的采样数据集来跑不同的初始化质心运行算法。

              4)batch_size:即用来跑Mini Batch KMeans算法的采样集的大小,默认是100.如果发现数据集的类别较多或者噪音点较多,需要增加这个值以达到较好的聚类效果。

    5)init: 即初始值选择的方式,和KMeans类的init意义一样。

    6)init_size: 用来做质心初始值候选的样本个数,默认是batch_size的3倍,一般用默认值就可以了。

    7)reassignment_ratio: 某个类别质心被重新赋值的最大次数比例,这个和max_iter一样是为了控制算法运行时间的。这个比例是占样本总数的比例,乘以样本总数就得到了每个类别质心可以重新赋

### 高效聚类算法概述 高效聚类算法通常指的是能够在较短时间内处理大规模数据集并提供合理分组结果的方法。其中,K-Means 和 Mini-Batch K-Means 是两种广泛使用的快速聚类算法[^2]。这些算法通过迭代优化目标函数来最小化簇内的距离平方和。 #### K-Means 算法简介 K-Means 是一种基于划分的聚类方法,它试图将数据划分为 \(k\) 个互斥的子集(即簇)。该算法的核心思想是不断调整质心位置以减少误差平方和 (SSE, Sum of Squared Errors)。 以下是 K-Means 的基本流程: 1. 初始化 \(k\) 个随机质心。 2. 将每个样本分配给最近的质心所代表的簇。 3. 更新各簇的质心为当前簇中所有点的均值向量。 4. 如果质心不再显著变化,则停止;否则返回第 2 步继续执行。 为了提高效率,在大数据场景下可以考虑采用 **Mini-Batch K-Means** 方法,这种方法每次仅利用一小部分样本来更新模型参数,从而大幅降低计算成本。 ```python from sklearn.cluster import MiniBatchKMeans import numpy as np # 创建模拟数据 X = np.random.rand(10000, 2) # 使用 Mini-Batch K-Means 进行聚类 mbkm = MiniBatchKMeans(n_clusters=5, random_state=0, batch_size=64).fit(X) labels = mbkm.labels_ centroids = mbkm.cluster_centers_ print(f"Cluster Labels:\n{labels[:10]}") # 输出前十个标签作为示例 ``` 上述代码展示了如何借助 `scikit-learn` 库中的 `MiniBatchKMeans` 类完成一次简单的批量训练过程。 另外值得注意的是,尽管层次聚类能够生成具有嵌套结构的结果,但由于其时间复杂度较高 (\(O(N^2)\)) ,因此对于非常庞大的数据集合来说可能并不是最佳选择[^1]。 ### 总结 当面对需要迅速得到初步结论的大规模数据分析任务时,推荐优先尝试像 Mini-Batch K-Means 或者其他线性时间复杂度级别的技术方案。它们不仅具备良好的性能表现,而且易于理解和部署实施。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值