###やりたいこと
現状正解率をだしても5割前後しかでないため正解率を上げたい。
ロジスティック回帰を使わずに出したい。
###わかっていること
ロジスティック回帰を利用して正解率を出したときは8割弱ほどはでていた。
###現在のソースコード
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=10000,epochs=100,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=",y_test2.shape) print("y_pred2=",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))
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。