[英]What is the difference between fit() and fit_predict() in SpectralClustering
[英]sklean fit_predict not accepting a 2 dimensional numpy array
我正在尝试使用三种不同的聚类算法进行一些聚类分析。 我正在从标准输入加载数据如下
import sklearn.cluster as cluster
X = []
for line in sys.stdin:
x1, x2 = line.strip().split()
X.append([float(x1), float(x2)])
X = numpy.array(X)
然后将我的聚类参数和类型存储在一个数组中
clustering_configs = [
### K-Means
['KMeans', {'n_clusters' : 5}],
### Ward
['AgglomerativeClustering', {
'n_clusters' : 5,
'linkage' : 'ward'
}],
### DBSCAN
['DBSCAN', {'eps' : 0.15}]
]
我试图在 for 循环中调用它们
for alg_name, alg_params in clustering_configs:
class_ = getattr(cluster, alg_name)
instance_ = class_(alg_params)
instance_.fit_predict(X)
除了instance_.fit_prefict(X)
函数外,一切正常。 我收到返回错误
Traceback (most recent call last):
File "meta_cluster.py", line 47, in <module>
instance_.fit_predict(X)
File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.17.1-py2.7-linux-x86_64.egg/sklearn/cluster/k_means_.py", line 830, in fit_predict
return self.fit(X).labels_
File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.17.1-py2.7-linux-x86_64.egg/sklearn/cluster/k_means_.py", line 812, in fit
X = self._check_fit_data(X)
File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.17.1-py2.7-linux-x86_64.egg/sklearn/cluster/k_means_.py", line 789, in _check_fit_data
X.shape[0], self.n_clusters))
TypeError: %d format: a number is required, not dict
任何人都知道我可能会出错的地方吗? 我在这里阅读了 sklearn 文档,它声称您只需要一个array-like or sparse matrix, shape=(n_samples, n_features)
我相信我有。
有什么建议? 谢谢!
class sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')[source]
你称之为 KMeans 类的方式是,
KMeans(n_clusters=5)
使用您当前的代码调用
KMeans({'n_clusters': 5})
这导致 alg_params 作为 Dict 而不是类参数传递。 其他算法也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.