前提・実現したいこと
Pythonでx-means法を実装して、クラスタリングの評価値としてシルエット値を用いようと考えています。
pyclusteringを用いてirisデータセットのクラスタリングを行いました。
しかし、sklearnのシルエット値を求めるコードしか調べても見つからずどう対応していいのか分からないため教えて頂きたいです。
発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last) <ipython-input-83-352b815f32be> in <module> 1 # シルエット値の計算 2 from sklearn.metrics import silhouette_samples ----> 3 result = xm.fit_predict(X) 4 silhouette_vals = silhouette_samples(X,result,metric = 'euclidean') 5 silhouette_avg = np.mean(silhouette_vals) AttributeError: 'xmeans' object has no attribute 'fit_predict'
該当のソースコード
Python
1import pyclustering 2from pyclustering.cluster import xmeans 3import numpy as np 4import matplotlib 5import matplotlib.pyplot as plt 6from sklearn import datasets, preprocessing 7# datasetの読み込み 8iris_data = datasets.load_iris() 9# DataFrameに変換 10df = pd.DataFrame(iris_data.data, columns=iris_data.feature_names) 11print(df.head()) 12X=df[["sepal length (cm)","petal width (cm)"]] # yラベル , xラベル 13X.shape 14 15initializer = pyclustering.cluster.xmeans.kmeans_plusplus_initializer(data=X, amount_centers=2) 16initial_centers = initializer.initialize() 17xm = xmeans.xmeans(data=X, initial_centers=initial_centers) 18xm.process() 19clusters = xm.get_clusters() 20pyclustering.utils.draw_clusters(data=X.values, clusters=clusters) 21 22# シルエット値の計算 23from sklearn.metrics import silhouette_samples 24result = xm.fit_predict(X) 25silhouette_vals = silhouette_samples(X,result,metric = 'euclidean') 26silhouette_avg = np.mean(silhouette_vals) 27print(silhouette_avg)
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
Python バージョン3.7.4
これ動かしてみるとか
https://github.com/annoviko/pyclustering/blob/master/pyclustering/cluster/examples/silhouette_examples.py
今python使える環境になくてテストできないので、動かなかったらごめんなさい
ありがとうございます!
リンク開いたのですが、Didn’t find anything here!って表示されてます。
ログインとかってしなきゃ見れないんですかね?
ここは見れますか?
https://github.com/annoviko/pyclustering
見れるなら、そこの右の方にある「code」っていう緑のボタンから、丸ごとzipで落とせるので、落として解凍したら、その中を
pyclustering/cluster/examples/
と開けてくとあります
https://pypi.org/project/pyclustering/#files
から ...tar.gz を落として解凍したら、その中にも入ってました
ということは、pipで入ったところの中に入ってるかも
pythonのパッケージが入ってるところ(たぶんsite-packagesという名前のフォルダ)にpyclusteringで始まるフォルダ名のフォルダがあったら、その中を探してみてください
(githubからうまく落とせなかったら)
githubから落とせました!
チャレンジしてみます!
あなたの回答
tips
プレビュー