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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

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

受付中

多クラスROC曲線を書きたい

sayaka1202
sayaka1202

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

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

0回答

0評価

1クリップ

3閲覧

投稿2018/01/11 22:34

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

kerasで画像を学習させたモデルを読み込み,テストデータを用いてこちらのようなROC曲線を書きたいと思っています.
しかし,下記のコードを実行すると次のエラーが出てしまいます.
roc_curveに入れるものが間違っていると思うのですが,どなたかご教授下さい.

ValueError: Data is not binary and pos_label is not specified

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

Python

from keras.models import load_model import keras import matplotlib.pyplot as plt from keras.preprocessing.image import array_to_img, img_to_array, list_pictures, load_img import numpy as np from sklearn.metrics import precision_recall_curve, roc_curve from sklearn.metrics import auc from collections import defaultdict def read_img(X, Y, test_dir): # Loading Image for picture in list_pictures(test_dir + 'A/'): img = img_to_array(load_img(picture, target_size=(299, 299))) X.append(img) Y.append(0) for picture in list_pictures(test_dir + 'B/'): img = img_to_array(load_img(picture, target_size=(299, 299))) X.append(img) Y.append(1) for picture in list_pictures(test_dir + 'C/'): img = img_to_array(load_img(picture, target_size=(299, 299))) X.append(img) Y.append(2) for picture in list_pictures(test_dir + 'D/'): img = img_to_array(load_img(picture, target_size=(299, 299))) X.append(img) Y.append(3) X = np.asarray(X) Y = np.asarray(Y) print(X.shape) print(Y.shape) return X, Y # 参照先のまま def save_plot_roc(y_labels, roc_scores, tprs, fprs): plt.clf() plt.figure(figsize=(35, 35)) column = 4 row = int(len(y_labels) / column) + 1 for i, y_label in enumerate(y_labels): plt.subplot(row, column, i + 1) auc_score = np.mean(roc_scores[y_label]) label = '%s vs rest' % y_label plt.grid(True) plt.plot([0, 1], [0, 1], 'k--') for j, tpr in enumerate(tprs[y_label]): plt.plot(fprs[y_label][j], tpr) plt.fill_between(fprs[y_label][j], tpr, alpha=0.5) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.0]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('ROC curve (AUC = %0.2f) / %s' % (auc_score, label), verticalalignment="bottom") plt.legend(loc="lower right") plt.show() # plt.savefig(file_name, bbox_inches="tight") img_size = 299 test_dir = 'D:/roc/' classes = ['A', 'B', 'C', 'D'] model = load_model(filepath='D:/models/model.hdf5') X = [] Y = [] X, Y = read_img(X, Y, test_dir) print('predict start') preds = model.predict(X) print('predict end\n') roc_scores = defaultdict(list) tprs = defaultdict(list) fprs = defaultdict(list) for i, label in enumerate(classes): print('number:', i) y_label_test = np.asarray(Y == label, dtype=int) # y_label_test = Y print('y_label', y_label_test) pred_label = preds[:, i] print('pred label', pred_label) fpr, tpr, roc_thresholds = roc_curve(y_label_test, pred_label) roc_scores[label].append(auc(fpr, tpr)) tprs[label].append(tpr) fprs[label].append(fpr) save_plot_roc(classes, roc_scores, tprs, fprs)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yag1kaz
yag1kaz

2018/01/24 08:36

モデルやデータは公開可能でしょうか?可能ならそれらをどこかにアップロードしていただけるようなら確認できる様になるとおもいます。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

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