- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 Sklearn 的 Minibatch K-Means 对图像 block 进行聚类,以重现 this paper 的结果。以下是有关我的数据集的一些信息:
我可以得到一些关于如何设置 Minibatch KMeans 参数的指导吗?目前,惯性开始收敛,但随后又突然上升,算法终止:
Minibatch iteration 48/1300:mean batch inertia: 22.392906, ewa inertia: 22.500929
Minibatch iteration 49/1300:mean batch inertia: 22.552454, ewa inertia: 22.509173
Minibatch iteration 50/1300:mean batch inertia: 22.582834, ewa inertia: 22.520959
Minibatch iteration 51/1300:mean batch inertia: 22.448639, ewa inertia: 22.509388
Minibatch iteration 52/1300:mean batch inertia: 22.576970, ewa inertia: 22.520201
Minibatch iteration 53/1300:mean batch inertia: 22.489388, ewa inertia: 22.515271
Minibatch iteration 54/1300:mean batch inertia: 22.465019, ewa inertia: 22.507231
Minibatch iteration 55/1300:mean batch inertia: 22.434557, ewa inertia: 22.495603
[MiniBatchKMeans] Reassigning 766 cluster centers.
Minibatch iteration 56/1300:mean batch inertia: 22.513578, ewa inertia: 22.498479
[MiniBatchKMeans] Reassigning 767 cluster centers.
Minibatch iteration 57/1300:mean batch inertia: 26.445686, ewa inertia: 23.130030
Minibatch iteration 58/1300:mean batch inertia: 26.419483, ewa inertia: 23.656341
Minibatch iteration 59/1300:mean batch inertia: 26.599368, ewa inertia: 24.127225
Minibatch iteration 60/1300:mean batch inertia: 26.479168, ewa inertia: 24.503535
Minibatch iteration 61/1300:mean batch inertia: 26.249822, ewa inertia: 24.782940
Minibatch iteration 62/1300:mean batch inertia: 26.456175, ewa inertia: 25.050657
Minibatch iteration 63/1300:mean batch inertia: 26.320527, ewa inertia: 25.253836
Minibatch iteration 64/1300:mean batch inertia: 26.336147, ewa inertia: 25.427005
我生成的图像 block 看起来不像论文作者得到的那样。我可以就如何设置 MiniBatchKmeans 的参数以获得更好的结果提供一些指导吗?这是我当前的参数:
kmeans = MiniBatchKMeans(n_clusters=self.num_centroids, verbose=True, batch_size=self.num_centroids * 20,compute_labels=False,
最佳答案
您看到的行为由 reassignment_ratio
参数控制。 MiniBatchKMeans 试图避免创建过度不平衡的类。每当最小和最大集群的大小比率低于此值时,低于阈值的集群中心将随机重新初始化。这就是
[MiniBatchKMeans] Reassigning 766 cluster centers.
簇数越大,即使在良好的簇中,簇大小的预期分布也越大(因此最小/最大比率越小)。默认设置为 reassignment_ratio=0.01
这对于 1600 个集群来说太大了。对于超过 1000 的集群大小,我通常只使用 reassignment_ratio=0
。在这种情况下,我还没有看到重新分配的改进。
如果您想尝试重新分配,请查看类似 reassignment_ratio=10**-4
的设置是否比 0 更好。请留意日志消息。如果一次重新分配超过 1 或 2 个集群,您可能应该进一步降低 reassignment_ratio
。您可能还想增加 max_no_improvement
以确保算法有足够的时间从重新分配引入的随机化中恢复,因为这至少在最初可能会使事情变得更糟,即使它让您摆脱困境长期的局部最小值。增加批量大小也可能有助于避免某些集群因采样变化而变小而触发重新分配。
关于python - MiniBatchKMeans 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447351/
我对 sklearn.cluster.MiniBatchKMeans 感兴趣作为使用庞大数据集的一种方式。无论如何,我对 MiniBatchKMeans.partial_fit() 之间的区别有点困惑
我正在使用 scikitlearn 中的 MiniBatchKMeans() 函数。出色地,在其文档中有: batch_size : int, optional, default: 100 Size
我正在尝试使用 Sklearn 的 Minibatch K-Means 对图像 block 进行聚类,以重现 this paper 的结果。以下是有关我的数据集的一些信息: 400,000 行 108
vectors = model.syn0 n_clusters_kmeans = 20 # more for visualization 100 better for clustering min_k
我的目标是从数百万行的数据集中执行文本聚类,其中每一行都是一串单词,与正确的单词不对应文档,而是“关键字”列表。这个想法是,每一行代表一个 Twitter 用户,其关键字列表取自他/她的推文,以下是行
我正在尝试根据使用 sklearn.cluster.MiniBatchKMeans 的轮廓分数找到正确的簇数 k。 from sklearn.cluster import MiniBatchKMean
我正在浏览 Clustering 上的 scikit-learn 用户指南| .他们有一个比较 K-Means and MiniBatchKMeans 的例子. 我对示例中的以下代码有点困惑: # W
我是一名优秀的程序员,十分优秀!