K-Means聚类[TypeError:__ init __()得到了一个意外的关键字参数' k']

时间:2015-04-22 00:20:40

标签: python scikit-learn

我尝试了来自this的k均值聚类算法的样本。

代码如下:

In [11]:
print __doc__
from time import time
import numpy as np
from sklearn import metrics
from sklearn.cluster import KMeans
from sklearn.datasets import load_digits
from sklearn.preprocessing import scale
np.random.seed(42)
digits = load_digits()
data = scale(digits.data)
n_samples, n_features = data.shape
n_digits = len(np.unique(digits.target))
labels = digits.target
print "n_digits: %d" % n_digits
print "n_features: %d" % n_features
print "n_samples: %d" % n_samples
print "Raw k-means with k-means++ init..."
km = KMeans(init='k-means++', k=n_digits, n_init=10).fit(data)
print "done in %0.3fs" % (time() - t0)
print "Inertia: %f" % km.inertia_
print "Homogeneity: %0.3f" % metrics.homogeneity_score(labels, km.labels_)
print "Completeness: %0.3f" % metrics.completeness_score(labels, km.labels_)
print "V-measure: %0.3f" % metrics.v_measure_score(labels, km.labels_)
Automatically created module for IPython interactive environment
n_digits: 10
n_features: 64
n_samples: 1797
Raw k-means with k-means++ init...
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-7cfc5c34beb6> in <module>()
     27 print "Raw k-means with k-means++ init..."
     28 t0 = time()
---> 29 km = KMeans(init='k-means++', k=n_digits, n_init=10).fit(data)
     30 print "done in %0.3fs" % (time() - t0)
     31 print "Inertia: %f" % km.inertia_

TypeError: __init__() got an unexpected keyword argument 'k'

我遇到了错误TypeError: __init__() got an unexpected keyword argument 'k',此处k表示群集的数量,为什么会将其检测为错误?

1 个答案:

答案 0 :(得分:3)

参数为n_clusters而不是k

km = KMeans(init='k-means++', n_clusters=n_digits, n_init=10).fit(data)

查看scikit-learn docs中的预期参数。

相关问题