You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sklearn.cluster.KMeans在Windows环境下随机触发堆内存损坏错误0xC0000374求助

sklearn.cluster.KMeans在Windows环境下随机触发堆内存损坏错误0xC0000374求助

我最近碰到一个特别头疼的随机问题:在Windows环境下用scikit-learn的KMeans做聚类时,会随机出现堆内存损坏错误0xC0000374,大概一半概率触发,完全没规律——有时候能正常跑,有时候直接崩。

先说说我的环境配置:

  • 系统:Windows 11 Home 24.2
  • Python版本:3.12.8
  • 开发环境:PyCharm Community Edition 2024.3(但在其他IDE甚至CMD里也能复现这个问题)
  • 虚拟环境:全新创建的venv,pip版本24.3.1
  • 依赖库版本:
    • Numpy 2.2.1
    • Scikit-learn 1.6.1
    • Scipy 1.15.1
    • threadpoolctl 3.5.0
    • joblib 1.4.2

我的测试代码非常极简,就是官方示例级别的代码:

import numpy as np
from sklearn.cluster import KMeans

X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0, init='random')
kmeans.fit(X)

注意:这个错误不是每次都会出现!有时候运行完全正常,有时候就报错,概率大概50%,随机性很强。

我已经试过了网上能找到的各种解决方案,但都没效果:

  • 更换init参数(比如换成默认的k-means++),问题依旧
  • 安装过不同版本的依赖库,确保它们之间版本兼容,还是会随机报错
  • 用faulthandler定位到错误肯定是在kmeans.fit(X)这一行触发的
  • 甚至从源码编译了scikit-learn 1.7.dev0版本,想看看是不是修复了这个问题,但结果还是一样
  • 另外发现MiniBatchKMeans也会出现完全相同的随机报错,但其他聚类算法比如Agglomerative Clustering、DBSCAN,以及其他库的聚类实现(比如HDBSCAN、faiss的Kmeans、scipy.cluster.vq的kmeans/vq)都能正常运行,完全没问题

现在我实在没辙了,感觉这会不会是scikit-learn的内部bug?有没有人遇到过类似的问题,或者有什么我没尝试过的解决思路?

备注:内容来源于stack exchange,提问作者fabrizio norcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:08:10