前提・実現したいこと
uciというデータセットを提供しているサイトからyeastのデータセットをcsvでダウンロードしました。
iris,wineデータなどラベルがあるデータセットはkmeans法を用いることができました。
発生している問題・エラーメッセージ
pandasでデータフレームを表示することはできたのですがその後のkmeans法へのアプローチ方法が分からず困っています。 ソースコード中のXに入れるものが何なのかがわかりません。
該当のソースコード
python
1from matplotlib import pyplot as plt 2from sklearn import datasets, preprocessing 3from sklearn.cluster import KMeans 4from sklearn.metrics import accuracy_score 5import numpy as np 6import pandas as pd 7from sklearn.metrics import silhouette_samples 8# datasetの読み込み 9#data = datasets.load_iris() # 1 10#data = datasets.load_wine() # 2 11#data = datasets.load_breast_cancer() # 3 12# DataFrameに変換 13#df = pd.DataFrame(data.data, columns=data.feature_names) # 1 2 3 14df = pd.read_csv('C:/Users/shota/OneDrive/デスクトップ/yeast.csv',header=None) 15print(df.head()) 16 17# データの整形 18#X=df[["sepal length (cm)","petal width (cm)"]] 19#X = df[["malic_acid","ash"]] 20#X = df[["mean radius","mean texture"]] 21X = df[[ ]] # ここに何を入れればいいのかがわかりません 22sc=preprocessing.StandardScaler() 23sc.fit(X) 24X_norm=sc.transform(X) 25# クラスタリング 26cls = KMeans(n_clusters=3) 27result = cls.fit(X_norm) 28# 結果を出力 29plt.scatter(X_norm[:,0],X_norm[:,1], c=result.labels_) 30plt.scatter(result.cluster_centers_[:,0],result.cluster_centers_[:,1],s=250, marker='*',c='red') 31plt.title('VABC-Kmeans clustering') 32plt.show() 33# シルエット値の計算 34from sklearn.metrics import silhouette_samples 35result = cls.fit_predict(X_norm) 36silhouette_vals = silhouette_samples(X_norm,result,metric = 'euclidean') 37silhouette_avg = np.mean(silhouette_vals) 38 39 40from sklearn.metrics import accuracy_score 41print(data.target) 42print(cls.labels_) 43accuracy_score(data.target,cls.labels_) 44 45# ラベルのリスト 46cluster_labels = np.unique(result) 47y_ax_lower, y_ax_upper = 0, 0 48yticks = [] 49for i, c in enumerate(cluster_labels): 50 c_silhouette_vals = silhouette_vals[result == c] 51 c_silhouette_vals.sort() 52 y_ax_upper += len(c_silhouette_vals) 53 color = plt.cm.jet(float(i) / 2) 54 plt.barh(range(y_ax_lower, y_ax_upper), c_silhouette_vals, height=1.0, 55 edgecolor='none', color=color) 56 57 yticks.append((y_ax_lower + y_ax_upper) / 2.) 58 y_ax_lower += len(c_silhouette_vals) 59 60silhouette_avg = np.mean(silhouette_vals) 61plt.axvline(silhouette_avg, color="red", linestyle="--") 62 63plt.yticks(yticks, cluster_labels + 1) 64plt.ylabel('Cluster') 65plt.xlabel('Silhouette coefficient') 66 67plt.tight_layout() 68plt.show() 69print(silhouette_avg) 70 71from sklearn.metrics import classification_report 72print(classification_report(data.target,cls.labels_)) 73 74from sklearn.metrics import confusion_matrix 75confmat = confusion_matrix(data.target,cls.labels_) 76fig,ax = plt.subplots(figsize=(2.5,2.5)) 77ax.matshow(confmat,cmap=plt.cm.Blues,alpha=0.3) 78for i in range (confmat.shape[0]): 79 for j in range (confmat.shape[1]): 80 ax.text(x=j,y=i,s=confmat[i,j],va='center',ha='center') 81plt.xlabel('predicted label') 82plt.ylabel('true label') 83plt.show
補足情報(FW/ツールのバージョンなど)
Python 3.7.4 jupter notebook
あなたの回答
tips
プレビュー