質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1710閲覧

csvデータセットをkmeans法を用いてクラスタリングしたい

teruterubozu

総合スコア5

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/01/20 08:33

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

plasticgrammer

2021/01/20 08:54

CSV項目から正解ラベルに直結するものを除いた、残りの項目を設定すればよいかと思います。 ※文字項目の数値変換等は別途必要 回答としては曖昧なので、とりあえずこちらに記載します。
teruterubozu

2021/01/22 03:32

ありがとうございます。 チャレンジしてみます!
toast-uz

2021/02/02 13:31

チャレンジした結果を報告した上で、新たな回答を求めていただきたいです。
teruterubozu

2021/02/03 04:53

了解しました。 新たに質問を作ります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問