###現在の状況
CSVファイルで正解率を求めるプログラムを作っています。
現在confusionmatrixを表示すると下記のように左側だけにしか表示されません。
ロジスティック回帰を利用して表示したときはちゃんと表示されてロジスティック回帰を使わなかったときに左側にのみ表示されてしまっています。
表示結果 y_test2= (12000, 1) y_pred2= (12000,) confusion matrix 混合行列 = [[6231 0] [5769 0]] accuracy 正解率 = 0.51925 precision 適合率 = 0.0 recall 再現率 = 0.0 f1 score = 0.0
###実現したいこと
confusion matrix 混合行列 = [[6231 0] [5769 0]]
この右側の部分(偽陰性率と真陰性率)の部分も実装したい。
追記
epoch数を上げたら右側にのみ表示された。
confusion matrix 混合行列 = [[ 0 6212] [ 0 5788]]
###現在のコード
from __future__ import print_function import pandas as pd from pandas import Series,DataFrame from sklearn import svm from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix, accuracy_score,recall_score, precision_score,f1_score import numpy as np import matplotlib.pyplot as plt import csv import keras from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import Adam from keras.optimizers import SGD csvdataset = pd.read_csv("Train_Random.csv",header=0) #説明変数 x = DataFrame(csvdataset.drop("Result",axis=1)) #目的変数 y = DataFrame(csvdataset["Result"]) #説明変数・目的変数をそれぞれ訓練データ・テストデータに分割 x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.20) y_test2 = y_test #y_pred2 = x_test pred = model.predict(x_test) y_pred2 = [np.argmax(i) for i in pred] y_test2 = np.array(y_test2) y_pred2 = np.array(y_pred2) #データの整形 x_train = x_train.astype(np.float) x_test = x_test.astype(np.float) y_train = keras.utils.to_categorical(y_train,10) y_test = keras.utils.to_categorical(y_test,10) #ニューラルネットワークの実装① model = Sequential() model.add(Dense(60, activation='relu', input_shape=(59,))) model.add(Dropout(0.2)) model.add(Dense(60, activation='relu', input_shape=(59,))) model.add(Dropout(0.2)) model.add(Dense(60, activation='relu', input_shape=(59,))) model.add(Dropout(0.2)) model.add(Dense(10, activation='softmax')) sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) #ニューラルネットワークの実装② model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy']) #ニューラルネットワークの学習 history = model.fit(x_train, y_train,batch_size=1000,epochs=10,verbose=1,validation_data=(x_test, y_test)) #ニューラルネットワークの推論 score = model.evaluate(x_test,y_test,verbose=1) print("\n") print("Test 損失値:",score[0]) print("Test 正解率:",score[1]) print(y_test2.shape) print(y_pred2.shape) print('confusion matrix 混合行列 =\n ', confusion_matrix(y_true=y_test2, y_pred=y_pred2))#混合行列 print('accuracy 正解率 = ', accuracy_score(y_true=y_test2, y_pred=y_pred2))#正解率(正しく分類されたデータ数の割合) print('precision 適合率 = ', precision_score(y_true=y_test2, y_pred=y_pred2))#適合率(Aに分類されたデータで実際にAであるデータ数の割合) print('recall 再現率 = ', recall_score(y_true=y_test2, y_pred=y_pred2))#再現率(実際にAであるデータのうちAに分類されたデータ数の割合) print('f1 score = ', f1_score(y_true=y_test2, y_pred=y_pred2))
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。