###前提・実現したいこと
・mnistデータでk 近傍法の実装の正解率の結果を元に混同行列を作成したいのですがどうすればいいのか。
・今の状態だとK=1の時でしか混合行列がわからないのでKが1以外の時を指定して表示させるにはどうすればいいですか
###該当のソースコード
python
1from collections import Counter 2from matplotlib import pyplot as plt 3from sklearn import datasets, model_selection, metrics 4from sklearn.metrics import accuracy_score, confusion_matrix 5from sklearn.neighbors import KNeighborsClassifier 6import sklearn.datasets as datasets 7import numpy as np 8import pandas as pd 9import time 10state = np.random.RandomState(1) 11 12mnist = datasets.fetch_mldata('MNIST original', data_home='data/src/download/') 13 14def main(): 15 16 # 特徴データとラベルデータを取り出す 17 features = mnist.data 18 targets = mnist.target 19 20 #データを分割 21 train_dataX, test_dataX, train_dataY, test_dataY = model_selection.train_test_split(features,targets,test_size=0.3) 22 23 # 検証する近傍数 24 K = 1 25 ks = range(1, K + 1) 26 27 for k in ks: 28 predicted_labels = [] 29 30 # モデルを学習 31 model = KNeighborsClassifier(n_neighbors=1, metric='euclidean') 32 model.fit(train_dataX,train_dataY) 33 34 # 一つだけ取り除いたテストデータを識別 35 predicted_label = model.predict(test_dataX) 36 predicted_labels.append(predicted_label) 37 38 # 正解率を計算 39 score = accuracy_score(test_dataY, predicted_label) 40 print("正解率:{}".format(score)) 41 42 # 混合行列を表示 43 cm = confusion_matrix(test_dataY, predicted_label) 44 print(cm) 45 46if __name__ == '__main__': 47 main()
###補足情報(言語/FW/ツール等のバージョンなど)
Anaconda
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/12 06:41
退会済みユーザー
2017/12/12 07:48
2017/12/12 08:13
退会済みユーザー
2017/12/12 11:32
2017/12/12 11:58
退会済みユーザー
2017/12/12 12:07