2016-09-29 2 views
2

세 가지 클러스터링 알고리즘을 사용하여 일부 클러스터링 분석을 수행하려고합니다. 나는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)이 필요하다고 주장한다.

제안 사항? 감사!

답변

2
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] 

그들은 방법 당신은 당신이 alg_params를 일으키는

KMeans({'n_clusters': 5}) 

대신 DICT로 전달하기 위해 호출하는 현재의 코드로, KMeans 클래스는

KMeans(n_clusters=5) 

를 호출 할 것 클래스 매개 변수의 다른 알고리즘에도 동일하게 적용됩니다.

+0

이러한 값을 사전에서 필수 형식으로 가져 오는 쉬운 방법이 있습니까? – wKavey

+2

@wKavey :'KMeans (** { 'n_clusters': 5})' –

+0

제 경우에는'instance_ = class _ (** alg_params)'입니까? – wKavey

관련 문제