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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

1364閲覧

python:mnistデータで最適なkを探すプログラム

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2017/11/28 06:47

###前提・実現したいこと

MNIST手書き数字データセットを使って最適なkを探すプログラムを作成しているのですが、
現在の状況からどのように改善すればいいか教えてください。
また、kの使う近傍数ごとの正解率を折れ線グラフで可視化するプログラムも教えてください。

###発生している問題

データの容量が大きいこと

###該当のソースコード

python

1from sklearn import datasets, model_selection, svm, metrics 2 3mnist = datasets.fetch_mldata('MNIST original', data_home='data/src/download/') 4 5print(type(mnist)) 6print(mnist.keys()) 7 8mnist_data = mnist.data / 255 9mnist_label = mnist.target 10 11print(mnist_data.shape) 12print(mnist_label.shape) 13 14train_size = 500 15test_size = 100 16data_train, data_test, label_train, label_test = model_selection.train_test_split(mnist_data, mnist_label, test_size=test_size, train_size=train_size) 17 18clf = svm.SVC() 19clf.fit(data_train, label_train) 20pre = clf.predict(data_test) 21 22ac_score = metrics.accuracy_score(label_test, pre) 23print(ac_score) 24 25import timeit 26 27num = 10 28 29train_size = 500 30test_size = 100 31data_train, data_test, label_train, label_test = model_selection.train_test_split(mnist_data, mnist_label, test_size=test_size, train_size=train_size) 32 33clf = svm.SVC() 34print(timeit.timeit(lambda: clf.fit(data_train, label_train), number=num) / num) 35pre = clf.predict(data_test) 36ac_score = metrics.accuracy_score(label_test, pre) 37print(ac_score) 38 39 40clf = svm.LinearSVC() 41print(timeit.timeit(lambda: clf.fit(data_train, label_train), number=num) / num) 42pre = clf.predict(data_test) 43ac_score = metrics.accuracy_score(label_test, pre) 44print(ac_score) 45 46train_size = 10000 47test_size = 2000 48data_train, data_test, label_train, label_test = model_selection.train_test_split(mnist_data, mnist_label, test_size=test_size, train_size=train_size) 49 50clf = svm.LinearSVC() 51print(timeit.timeit(lambda: clf.fit(data_train, label_train), number=num) / num) 52pre = clf.predict(data_test) 53 54ac_score = metrics.accuracy_score(label_test, pre) 55print(ac_score) 56# 5.980748841702007 57# 0.8945 58 59co_mat = metrics.confusion_matrix(label_test, pre) 60print(co_mat)

###補足情報(言語/FW/ツール等のバージョンなど)
Anaconda3 Python

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

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

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

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

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

guest

回答1

0

ベストアンサー

現状でも学習できているように見受けられますが、改善というのはどのようなことを想定しているのでしょうか。
SVCのパラメータのチューニングのことでしょうか。
http://blog.amedama.jp/entry/2016/01/03/143258

SVCに近傍の概念があまりありませんが、教師データの数に対する正答率のことでしょうか。

投稿2017/11/28 07:55

mkgrei

総合スコア8560

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

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

退会済みユーザー

退会済みユーザー

2017/11/28 08:02

k を 1 ~ 10 の間で調整しながら総当りで汎化性能を計算するように改善したいのですがどのようにfor文を書けば出力できるかと。そして、kの使う近傍数ごとの正解率を折れ線グラフで可視化するプログラムにしたいです。
mkgrei

2017/11/28 08:10

貼られているコードがサポートベクターマシンの分類器なのですが、kはどのパラメータを指しているのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問