版本 0.22.2 和 1.2.2 之间具有相同random_state的不同集群结果

Different cluster result with same random_state between versions 0.22.2 & 1.2.2

提问人:Okorimi Manoury 提问时间:7/31/2023 最后编辑:desertnautOkorimi Manoury 更新时间:7/31/2023 访问量:66

问:

我正在处理一个聚类问题。为了确保结果的可重复性,我们最初将参数设置为 0。但是,将scikit-learn从版本0.22.2更新到版本1.2.2后,我遇到了一个意外的问题。当我使用相同的数据集运行相同的代码时,结果与我们之前的运行不同。我们不确定这种不一致背后的原因,也无法重现最初的结果。random_stateKMeans()

法典:

model = KMeans(n_clusters=5, init='k-means++', tol=0.0001, random_state=0, copy_x=True, algorithm='auto' )

预期结果簇数 = 5

    Cluster 1 | Cluster 2 | Cluster 3 | Cluster 4| cluster 5
            10| 20| 12| 30|45

实际结果

版本 0.22.2 :簇数 = 5

    Cluster 1 | Cluster 2 | Cluster 3 | Cluster 4| cluster 5
            10| 5| 6| 14|5

版本 1.2.2 :簇数 = 5

    Cluster 1 | Cluster 2 | Cluster 3 | Cluster 4| cluster 5
            3| 7| 20| 8|2
scikit-learn 聚类分析 k-means python-3.9 随机种子

评论

1赞 doneforaiur 7/31/2023
我正在检查(是的,一个接一个)旧版本的更新日志,并遇到了这个问题。还有这个
2赞 Andrey 7/31/2023
这些版本之间的源代码差异很大。初始化/算法的细微变化可能会导致不同的结果。如果找到这些更改的原因对您来说很重要,您可以自己检查这些版本的 scikit-learn 源代码。
1赞 doneforaiur 7/31/2023
你不是也用在早期版本吗?k-means++
3赞 desertnaut 7/31/2023
绝对没有理由为什么包含随机化的算法应该在任何库的不同版本之间给出相同的结果,即使使用相同的随机种子。
3赞 Him 7/31/2023
为了说明@desertnaut正在谈论的那种事情,假设在新版本中,无论出于何种原因,他们都要额外调用一个。即使假设相同的 rng 和相同的种子,这也会将整个随机数序列向上移动,从而导致所有意图和目的都被视为完全不同的模型初始化。kmeansnp.random.randint

答: 暂无答案