Die*_*ego 0 neural-network roc scikit-learn keras tensorflow
我使用Keras模拟神经网络,我试图用一个图来评估它acc和val_acc。我在以下代码行中有 3 个错误:
print(history.keys())错误是function' object has not attribute 'keys'y_pred = classifier.predict(X_test)错误是name 'classifier' is not definedplt.plot(history.history['acc'])错误是 'History' object is not subscriptable我也在尝试绘制 ROC 曲线,我该怎么做?
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import keras
from keras.models import Sequential
from keras.layers import Dense
from sklearn import cross_validation
from matplotlib import pyplot
from keras.utils import plot_model
dataset = pd.read_csv('Data_BP.csv')
X = dataset.iloc[:, 0:11].values
y = dataset.iloc[:, -1].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size = 0.2, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
def Model():
classifier = Sequential()
classifier.add(Dense(units = 12, kernel_initializer = 'uniform', activation = 'relu', input_dim = 11))
classifier.add(Dense(units = 8, kernel_initializer = 'uniform', activation = 'relu'))
classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'mean_squared_error', metrics = ['mse', 'acc'])
return classifier
classifier = Model()
history = classifier.fit(X_train, y_train, validation_split=0.25, batch_size = 10, epochs = 5)
print('\n', history.history.keys())
y_pred = classifier.predict(X_test)
y_pred = (y_pred > 0.5)
from sklearn.metrics import recall_score, classification_report, auc, roc_curve
cm = confusion_matrix(y_test, y_pred)
print(cm)
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()
Run Code Online (Sandbox Code Playgroud)
应该增加哪些功能?
更改history为classifier以下几行(实际上Historyobject 是 object 上fit调用的方法的返回值Model),如下所示:
classifier = Model()
history = classifier.fit(...)
Run Code Online (Sandbox Code Playgroud)
不要将fit方法的返回值与您的模型混淆。该History对象,顾名思义,只包含训练历史。然而,你的模型是classifier和它是有方法的一个样fit(),predict(),evaluate(),compile(),等。
此外,该History对象有一个名为的属性history,它是一个包含训练过程中损失和度量值的字典。因此,您需要改为使用print(history.history.keys())。
现在,如果您想在训练期间绘制损失曲线(即每个时期结束时的损失),您可以这样做:
loss_values = history.history['loss']
epochs = range(1, len(loss_values)+1)
plt.plot(epochs, loss_values, label='Training Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10467 次 |
| 最近记录: |