Как визуализировать историю обучения модели с помощью классификатора MLP scikit learn?

Я использовал набор данных pima-indians-diver.csv. Я построил нейронную сеть, содержащую архитектуру 12-8-1, с использованием Keras, и я смог идеально визуализировать историю обучения. Затем я попытался реализовать ту же модель, используя MLPCLassifier из scikit learn. Можно ли в этом случае реализовать кривые истории обучения, как я сделал с Керасом? Мне просто нужно визуализировать свою историю обучения, то есть точность обучения, точность проверки, потерю обучения и потерю проверки, как я сделал с Керасом. Мой код и кривые с использованием 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()

введите здесь описание изображения  введите описание изображения здесь

Мой код с использованием классификатора MLP sklearn:

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))

Мне удалось создать отчет о классификации, но без графической визуализации. Как я могу сгенерировать кривые, подобные приложенным, используя MLPClassifier sklearn, как я сделал с Keras?


person Faria Zarin Subah 1504027    schedule 30.09.2020    source источник
comment
Тщательная проверка, наборы для проверки и тестирования - это две очень разные концепции, и вы должны сначала уяснить различия. Валидация предоставит вам историю, а тест - нет. В вашем коде sklearn вы на самом деле не проверяете после каждой эпохи, поэтому не будет никакой истории для проверки, поскольку вы просто тестируете окончательную модель. По вашему вопросу см. Это: stackoverflow.com/questions/46912557/   -  person runDOSrun    schedule 01.10.2020
comment
На самом деле у scikit learn MLPClassifier есть аргумент, фракция проверки, которая установлена ​​на 0,1, то есть 10% по умолчанию. Таким образом, модель проверяется после каждой итерации на 10% обучающих данных. Я прикрепил ссылку на документацию sklearn. [scikit-learn.org/stable/modules/generated/   -  person Faria Zarin Subah 1504027    schedule 01.10.2020