У меня проблема с регрессией, и я использую полностью связанный слой keras для моделирования своей проблемы. Я использую cross_val_score, и мой вопрос: как я могу извлечь модель и историю каждой комбинации поезд / проверка, которую делает cross_val_score?
Принимая этот пример:
from sklearn import datasets
from sklearn.model_selection import cross_val_score, KFold
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
seed = 1
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
def baseline_model():
model = Sequential()
model.add(Dense(10, input_dim=10, activation='relu'))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
return model
estimator = KerasRegressor(build_fn=baseline_model, nb_epoch=100, batch_size=100, verbose=False)
kfold = KFold(n_splits=10, random_state=seed)
results = cross_val_score(estimator, X, y, cv=kfold)
print("Results: %.2f (%.2f) MSE" % (results.mean(), results.std()))
Насколько я понимаю, я получаю, так сказать, только общее значение mse за каждый фолд. Но я хочу сравнить поезд с проверкой mse по эпохам модели для каждого сгиба, то есть для 10 в данном случае.
Если не использовать kfold, а просто разделить поезд / проверку, то можно сделать:
hist = model.fit(X_tr, y_tr, validation_data=val_data,
epochs=100, batch_size=100,
verbose=1)
plt.plot(history.history['loss'])
plt.plot(history.history['loss'])
Это вернет график, представляющий эволюцию mse wrt к эпохам для поездаи проверочные наборы данных, позволяющие определить пере / недостаточное оснащение. Любые идеи, как сделать это для каждого сгиба при использовании перекрестной проверки?