Keras 如何使用scikit学习可视化模型培训历史;s MLP分类器?

Keras 如何使用scikit学习可视化模型培训历史;s MLP分类器?,keras,scikit-learn,neural-network,curve,mlp,Keras,Scikit Learn,Neural Network,Curve,Mlp,我使用了pima-indians-diabetes.csv数据集。我用Keras构建了一个包含架构12-8-1的神经网络,我能够完美地可视化训练历史。接下来,我尝试使用scikit learn的MLPClassizer实现相同的模型。在这种情况下,是否可以像我对Keras那样实现训练历史曲线?我只需要想象我的训练历史,也就是说,训练准确度、验证准确度、训练损失和验证损失,就像我对Keras所做的那样。我的代码和使用Keras的曲线: from keras.models import Sequen

我使用了pima-indians-diabetes.csv数据集。我用Keras构建了一个包含架构12-8-1的神经网络,我能够完美地可视化训练历史。接下来,我尝试使用scikit learn的MLPClassizer实现相同的模型。在这种情况下,是否可以像我对Keras那样实现训练历史曲线?我只需要想象我的训练历史,也就是说,训练准确度、验证准确度、训练损失和验证损失,就像我对Keras所做的那样。我的代码和使用Keras的曲线:

from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import StratifiedKFold
import numpy
numpy.random.seed(42)

# load pima indians dataset
dataset = numpy.loadtxt("/content/gdrive/My Drive/pima-indians-diabetes.csv", delimiter=",")

# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]

model = Sequential()
model.add(Dense(12, input_dim=8, kernel_initializer= 'uniform' , activation= 'relu' ))
model.add(Dense(8, kernel_initializer= 'uniform' , activation= 'relu' ))
model.add(Dense(1, kernel_initializer= 'uniform' , activation= 'sigmoid' ))
# Compile model
model.compile(loss= 'binary_crossentropy' , optimizer= 'adam' , metrics=[ 'accuracy' ])

history= model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10)

import matplotlib.pyplot as plt
print(history.history.keys())
# summarize history for accuracy
plt.plot(history.history[ 'accuracy' ])
plt.plot(history.history[ 'val_accuracy' ])
plt.title( 'model accuracy' )
plt.ylabel( 'accuracy' )
plt.xlabel( 'epoch' )
plt.legend([ 'train' , 'test' ], loc= 'lower right' )
plt.show()

import matplotlib.pyplot as plt
print(history.history.keys())
# summarize history for accuracy
plt.plot(history.history[ 'loss' ])
plt.plot(history.history[ 'val_loss' ])
plt.title( 'model loss' )
plt.ylabel( 'loss' )
plt.xlabel( 'epoch' )
plt.legend([ 'train' , 'test' ], loc= 'upper left' )
plt.show()

我的代码使用sklearn的MLP分类器:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=42)

#Using MLPclassifier from sklearn
from sklearn.neural_network import MLPClassifier

clf1 = MLPClassifier(batch_size=10, max_iter=150, hidden_layer_sizes=(12, 8), verbose=True, 
early_stopping=True, random_state=42)

clf1.fit(X_train, y_train)

from sklearn.metrics import classification_report
#Predicting y for X_val
y_pred = clf1.predict(X_test)

print(classification_report(y_test, y_pred))

我能够生成分类报告,但没有图形可视化。我怎样才能像使用Keras一样使用sklearn的MLPC分类器生成曲线?

小心,验证和测试集是两个非常不同的概念,您应该首先清楚它们的区别。验证会给你一个历史记录,测试不会。在sklearn代码中,您并没有在每个历元之后进行真正的验证,因此不会有任何验证历史,因为您只是测试最终的模型。对于您的问题,请参见:实际上scikit learn MLPClassizer有一个参数,validation fraction默认设置为0.1,即10%。因此,该模型在每次迭代后都会在10%的训练数据上得到验证。我已附上sklearn文档的链接。[