sklearn 1.0.1调用KMeans传n_jobs报意外关键字参数错误
问题结论
是的,sklearn.cluster.KMeans 的n_jobs参数确实已经在版本更新中被正式移除,这就是你在1.0.1版本下运行代码报错的直接原因。
参数调整说明
- scikit-learn 从
0.23版本开始正式移除了KMeans类的n_jobs入参 - 移除原因:官方优化了KMeans的底层并行逻辑,原来通过
n_jobs控制的多进程并行方案被效率更高的内部实现替代,该参数已经失去实际作用因此被废弃移除
修复方案
- 直接删除代码中的
n_jobs=8参数即可,当前版本的KMeans默认已经会自动利用多核CPU性能,无需额外配置并行参数
修改后代码如下:model = KMeans(n_clusters = k, max_iter = iteration) - 如果需要编写兼容新旧版本sklearn的代码,可以通过版本判断动态传参:
import sklearn from packaging.version import parse params = {"n_clusters": k, "max_iter": iteration} if parse(sklearn.__version__) < parse("0.23"): params["n_jobs"] = 8 model = KMeans(**params)
内容的提问来源于stack exchange,提问作者Fool
相关产品推荐
相关产品推荐

