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

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

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

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

1回答

5346閲覧

model.predictが実行されるデータの出力がしたい

yamasan_

総合スコア18

Keras

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

1クリップ

投稿2018/11/13 05:54

前提・実現したいこと

機械学習を勉強している大学生です。
python,tensorflow,kerasを用いて2クラス分類を行うプログラムを書いています。

プログラムの大部分をkerasを用いて書いております。

分類確率をmodel.predictで出すことはできるのですが、
その確率値がどのデータに対するものなのかを出力する方法がわかりません。
以下は確率値を出すための部分的なプログラムです。

該当のソースコード

python

1result = model.predict(X_test) 2 3import csv 4with open('aaa.csv', 'w', newline='') as csv_file: 5 title = ['0', '1'] 6 writer = csv.writer(csv_file) 7 writer.writerow(title) 8 writer.writerows(result)

これを改良したいと思っているのですが、方法がわからずです。
理想としては

ファイル名 0である確率値 1である確率値
1.png 0.9999 0.0001
2.png 0.9999 0.0001
.
.
.
のように出力することです。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

2クラス分類ということは出てきた result は (N, 2) の配列ですよね。
その場合、result[i, j] は、X_test[i] のクラス j の確率を表しています。


追記

python

1class Label: 2 a = 0 3 b = 1 4 5dirpaths = [('a', Label.a), ('b', Label.b)] 6 7data = [] 8labels = [] 9filepaths = [] 10 11for dirname, label in dirpaths: 12 dirpath = os.path.join('data', 'test', dirname, '*.csv') 13 for csv_path in glob.glob(dirpath): 14 data.append(np.loadtxt(csv_path, delimiter=",")) 15 labels.append(label) 16 filepaths.appned(csv_path) 17 18X_test = np.array(data) 19Y_test = to_categorical(labels) 20 21#print('X_test.shape', X_test.shape) 22#print('Y_test.shape', Y_test.shape)

投稿2018/11/13 06:40

編集2018/11/13 09:52
tiitoi

総合スコア21956

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

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

yamasan_

2018/11/13 08:04

確かにresultは(N,2)の配列なのですが、 上記のプログラムでprint(result)を実行した場合、以下のようになります。 --- [[1.0000000e+00 0.0000000e+00] . . . [1.3966754e-23 1.0000000e+00]] --- この場合、result[i,j]はiが「0である確率値」、jが「1である確率値」となるのではないでしょうか?
tiitoi

2018/11/13 08:12

クラスが '0', '1' ということでしょうか? だとするならば、回答に書いたとおり result[i, 0] は、入力 X_test[i] がクラス0である確率 result[i, 1] は、入力 X_test[i] がクラス1である確率 です。
yamasan_

2018/11/13 08:50

では上記に記載した出力のうちの1つである [1.3966754e-23 1.0000000e+00] はどのような意味を持つのですか?
tiitoi

2018/11/13 08:57

それが result の i 行目だとしたら、入力の i 個目のデータが クラス0である確率 1.3966754e-23 (0%) クラス1である確率 1.0000000e+00 (100%) を意味します。 確率なので、クラス0の確率 + クラス1の確率 = 1 です。 丸め誤差があるので、実際は厳密に1にはなりませんが。
yamasan_

2018/11/13 09:20

ご丁寧にありがとうございます。 入力データをファイルからinputするようにしているのですが、i個目のデータというのがどのデータに当たるのかがいまいちわかりません。 この場合、ファイルの上から順に入力されているのでしょうか? それとも何か別の規則のようなものがあるのでしょうか? わかりづらい質問で申し訳ありません。
tiitoi

2018/11/13 09:29 編集

入力といっているのは、X_test のことです。 X_test をどのように作ったのかによりますので、その部分が質問欄のコードにはないのでわかりません。 例えば、ファイルに書かれた名前の画像を順番に読んでいって X_test を作ったのなら、その順番です。 読み込む際にリストかなにかに読み込んだファイル名も一緒に記録しておけばよいと思います。
yamasan_

2018/11/13 09:51 編集

X_testは以下のようにして作りました。 ```python class Label: a = 0 b = 1 dirpaths = [('a', Label.a),('b', Label.b)] data = [] labels = [] for dirname, label in dirpaths: dirpath = os.path.join('data', 'test', dirname, '*.csv') for csv_path in glob.glob(dirpath): data.append(np.loadtxt(csv_path, delimiter=",")) labels.append(label) X_test = np.array(data) Y_test = to_categorical(labels) #print('X_test.shape', X_test.shape) #print('Y_test.shape', Y_test.shape) ``` このプログラムでは複数のcsvファイルを読み込んでいます。 この場合だと、特に順番を指定してはいないのですが、どうなっているのでしょうか?
tiitoi

2018/11/13 09:52

glob.glob() がファイルパスのリストを返すのでその順番になっています。 なので、作成した X_test がどのファイルに対応するか知りたい場合は、追記のようにもう一個リストを用意して、ファイルパスを保持してください。
yamasan_

2018/11/13 10:15

ご丁寧にありがとうございます。 なんとかできそうなので、もう少し頑張ってみたいと思います。
tiitoi

2018/11/13 10:37

もしわからないことがあったら補足するので言ってください 解決したら、解決済にしてくださいね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問