sklearn.cluster.KMeans 得到“TypeError:__init__() 得到了一个意外的关键字参数‘n_jobs’”
Posted
技术标签:
【中文标题】sklearn.cluster.KMeans 得到“TypeError:__init__() 得到了一个意外的关键字参数‘n_jobs’”【英文标题】:sklearn.cluster.KMeans got "TypeError: __init__() got an unexpected keyword argument 'n_jobs'" 【发布时间】:2022-01-12 13:59:52 【问题描述】:此错误是由于以下行引起的
model = KMeans(n_clusters = k, n_jobs=8, max_iter = iteration).
我的 sklearn 版本是 1.0.1。我记得 sklearn.cluster.KMeans 有 n_jobs 参数。 sklearn.cluster.KMeans更新后是否没有n-jobs的参数?
【问题讨论】:
Kmeans 不支持n_jobs
参数,可用参数见官方docs。
n_jobs
输入参数在我认为的 0.24.2 版本之后已被弃用。在最新版本中没有这样的输入参数@Fool
【参考方案1】:
如果你搜索“sklearn kmeans”,那么第一个结果将是这个官方文档页面:
sklearn.cluster.KMeans在该页面上,第一件事是原型,带有参数及其默认值:
sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init=10, max_iter=300, tol=0.0001, verbose=0, random_state=None, copy_x=True, algorithm='auto')
不,没有称为 n_jobs
的参数。
曾经有一个名为n_jobs
的参数,但在0.23版中已弃用,现在已删除:sklearn (0.24) .cluster.KMeans
【讨论】:
以前存在一些版本:scikit-learn.org/0.24/modules/generated/…【参考方案2】:n_jobs
输入参数在 0.23 版本之后已被弃用。在最新版本中,没有这样的输入参数。
目前,它默认使用所有内核。如果您想使用特定数量的内核,您可以设置 OMP_NUM_THREADS 环境变量(查看详细信息)或使用 threadpoolctl 包。 Source
来自文档:
n_jobsint, default=None
The number of OpenMP threads to use for the computation. Parallelism is sample-wise on the main cython loop which assigns each sample to its closest center.
None or -1 means using all processors.
Deprecated since version 0.23: n_jobs was deprecated in version 0.23 and will be removed in 1.0 (renaming of 0.25).
来源:https://scikit-learn.org/0.24/modules/generated/sklearn.cluster.KMeans.html?highlight=kmeans#sklearn.cluster.KMeans
【讨论】:
以上是关于sklearn.cluster.KMeans 得到“TypeError:__init__() 得到了一个意外的关键字参数‘n_jobs’”的主要内容,如果未能解决你的问题,请参考以下文章
sklearn.cluster.KMeans 如何处理缺少质心(可用质心小于 n_clusters)的 init ndarray 参数?
聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用