세 가지 클러스터링 알고리즘을 사용하여 일부 클러스터링 분석을 수행하려고합니다. 나는sklean fit_predict 2 차원 numpy 배열을 허용하지 않습니다.
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 워드 프로세서 here을 읽고 그것은 내가 가지고 있다고 믿는 array-like or sparse matrix, shape=(n_samples, n_features)
이 필요하다고 주장한다.
제안 사항? 감사!
이러한 값을 사전에서 필수 형식으로 가져 오는 쉬운 방법이 있습니까? – wKavey
@wKavey :'KMeans (** { 'n_clusters': 5})' –
제 경우에는'instance_ = class _ (** alg_params)'입니까? – wKavey