私は3つの異なるクラスタリングアルゴリズムを使っていくつかのクラスタリング分析を実行しようとしています。私は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