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

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

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

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

Q&A

解決済

1回答

7004閲覧

keras クラスごとの精度

22Go

総合スコア55

Python

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

0グッド

3クリップ

投稿2019/06/14 22:43

kerasにて画像の判別機を作成しております。
学習データの精度の偏りを見るためにクラスごとの精度をグラフ表示したいのですが、どのようにしたらいいでしょうか?

python

1# coding:utf-8 2 3import keras 4from keras.utils import np_utils 5from keras.layers.convolutional import Conv2D, MaxPooling2D 6from keras.models import Sequential 7from keras.layers.core import Dense, Dropout, Activation, Flatten 8from keras.preprocessing.image import array_to_img, img_to_array, list_pictures, load_img 9import numpy as np 10import pandas as pd 11from sklearn.model_selection import train_test_split 12import matplotlib.pyplot as plt 13from keras.preprocessing.image import ImageDataGenerator 14from keras.preprocessing import image 15 16 17 18#【学習データの読み込み】 19X = [] 20Y = []#category_name 21datagen = ImageDataGenerator(horizontal_flip=True) 22max_img_num = 10 23 24 25# a画像 26for picture in list_pictures('dir/pic/a'): 27 img = img_to_array(load_img(picture, target_size=(32,32))) 28 X.append(img) 29 Y.append(0) 30 31# b画像 32for picture in list_pictures('/dir/pic/b'): 33 img = img_to_array(load_img(picture, target_size=(32,32))) 34 X.append(img) 35 X.append(img2) 36 37 Y.append(1) 38 39# 画素値を0から1の範囲に変換 40X = X.astype('float32') 41X = X / 255.0 42 43# クラスの形式を変換 44Y = np_utils.to_categorical(Y, 1) 45 46# 学習用データとテストデータ 47X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2) 48 49# 【CNNを構築】 50model = Sequential() 51 52model.add(Conv2D(32, (3, 3), padding='same', 53 input_shape=X_train.shape[1:])) 54 55model.add(Activation('relu')) 56model.add(Conv2D(32, (3, 3))) 57model.add(Activation('relu')) 58model.add(MaxPooling2D(pool_size=(2, 2))) 59model.add(Dropout(0.25)) 60model.add(Conv2D(64, (3, 3), padding='same')) 61model.add(Activation('relu')) 62model.add(Conv2D(64, (3, 3))) 63model.add(Activation('relu')) 64model.add(MaxPooling2D(pool_size=(2, 2))) 65model.add(Dropout(0.25)) 66 67model.add(Flatten()) 68model.add(Dense(512)) 69model.add(Activation('relu')) 70model.add(Dropout(0.6)) 71model.add(Dense(2)) 72model.add(Activation('softmax')) 73 74# 【コンパイル】 75model.compile(loss='categorical_crossentropy',#損失関数 76 optimizer='adam',#最適化、オブジェクト 77 metrics=['accuracy'])#評価関数、正解率 78 79#【学習実行】 80history = model.fit(X_train, y_train, batch_size=64, epochs=1, 81 validation_data = (X_test, y_test), verbose = 1) 82 83 84score = model.evaluate(X_test, y_test, verbose = 1) 85print("正解", score[1], "loss", score[0]) 86 87#【学習をグラフ表示】 88%matplotlib inline 89plt.plot(history.history['acc']) 90plt.plot(history.history['val_acc']) 91plt.title('model accuracy') 92plt.legend(['train', 'test'], loc='upper left') 93plt.show() 94plt.plot(history.history['loss']) 95plt.plot(history.history['val_loss']) 96plt.title('model loss') 97plt.legend(['loss', 'val_loss'], loc='upper left') 98plt.show() 99

この場合aとbの画像に対しての精度を見たいです。

宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえず混同行列(Confusion Matrix) - 何個が正しく判定され、何個が誤って判定されたかをクロス表にまとめたもの - を書くとよいかと思います。

Python

1from sklearn.metrics import confusion_matrix 2 3predict_classes = model.predict_classes(X_test) 4true_classes = np.argmax(y_test, 1) 5cmx = confusion_matrix(true_classes, predict_classes) 6print(cmx)

この結果はSeaborn を使ってヒートマップで表示しても良いかと思いますが

Python

1import seaborn as sns 2sns.heatmap(cmx, annot=True, fmt='g', square=True) 3plt.show()

2値分類だとあまり効果は無い気もしますね。

投稿2019/06/21 00:34

magichan

総合スコア15898

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

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

22Go

2019/06/21 07:17

ありがとうございます。何かツールとして存在するかと思っていましたが、なかなかちょうどいいものがないので、magichan様のものを試してみたいと思います。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問