###前提・実現したいこと
mnistデータでknnを実行したが、データサイズが大きいため処理に時間がかかる。
- 処理時間を高速にするにはどうするか。
- データサイズを指定して実行するにはどうすればよいのか。
###発生している問題・エラーメッセージ
データサイズが大きいため処理に時間がかかる。 - 処理時間を高速にするにはどうするか。 - データサイズを指定して実行するにはどうすればよいのか。
###該当のソースコード
python
1from collections import Counter 2from matplotlib import pyplot as plt 3from sklearn import datasets, model_selection, metrics 4from sklearn.model_selection import LeaveOneOut 5from sklearn.metrics import accuracy_score 6from sklearn.neighbors import KNeighborsClassifier 7import sklearn.datasets as datasets 8import numpy as np 9import time 10 11 12def main(): 13 # データをロード 14 mnist = datasets.fetch_mldata('MNIST original', data_home='data/src/download/') 15 16 # 特徴データとラベルデータを取り出す 17 features = mnist.data 18 targets = mnist.target 19 20 # 検証する近傍数 21 K = 10 22 ks = range(1, K + 1) 23 24 # 使う近傍数ごとに正解率&各経過時間を計算 25 accuracy_scores = [] 26 start = time.time() 27 for k in ks: 28 predicted_labels = [] 29 loo = LeaveOneOut() 30 for train, test in loo.split(features): 31 train_data = features[train] 32 test_data = targets[train] 33 34 elapsed_time = time.time() - start 35 36 # モデルを学習 37 model = KNeighborsClassifier(n_neighbors=k) 38 model.fit(train_data, test_data) 39 40 # 一つだけ取り除いたテストデータを識別 41 predicted_label = model.predict(features[test]) 42 predicted_labels.append(predicted_label) 43 44 # 正解率を計算 45 score = accuracy_score(targets, predicted_labels) 46 print('k={}: {}'.format(k, score)) 47 48 accuracy_scores.append(score) 49 50 # 各経過時間を表示 51 print("経過時間:{:.2f}".format(elapsed_time)) 52 53 # 使う近傍数ごとの正解率を折れ線グラフ 54 X = list(ks) 55 plt.plot(X, accuracy_scores) 56 57 plt.xlabel('k') 58 plt.ylabel('正解率') 59 plt.show() 60 61 62if __name__ == '__main__': 63 main()
###補足情報
Anaconda3 Python
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/04 14:16
退会済みユーザー
2017/12/04 14:18
2017/12/04 14:34
退会済みユーザー
2017/12/04 14:55
2017/12/04 23:49
退会済みユーザー
2017/12/05 16:54
2017/12/05 22:13
退会済みユーザー
2017/12/06 08:59
2017/12/06 11:08
退会済みユーザー
2017/12/06 14:22
2017/12/07 15:01
退会済みユーザー
2017/12/08 10:02 編集
退会済みユーザー
2017/12/08 10:30
退会済みユーザー
2017/12/08 10:31
退会済みユーザー
2017/12/08 10:31
2017/12/08 11:16
退会済みユーザー
2017/12/08 15:01
2017/12/08 17:54
退会済みユーザー
2017/12/09 11:48
2017/12/09 12:46
退会済みユーザー
2017/12/09 13:19