model_1
правильно.
https://scikit -learn.org / стабильный / модули / полученные / sklearn.model_selection.cross_validate.html
cross_validate(estimator, X, y=None, groups=None, scoring=None, cv=’warn’, n_jobs=None, verbose=0, fit_params=None, pre_dispatch=‘2*n_jobs’, return_train_score=’warn’, return_estimator=False, error_score=’raise-deprecating’)
, где
estimator
- это объект, реализующий 'fit'. Это будет называться, чтобы соответствовать модели на сгибах поезда.
cv
: это генератор перекрестной проверки, который используется для создания обучающих и тестовых расщеплений.
Если вы последуете примеру в документации по sklearn
cv_results = cross_validate(lasso, X, y, cv=3, return_train_score=False)
cv_results['test_score']
array([0.33150734, 0.08022311, 0.03531764])
Вы можете видеть, что модель lasso
устанавливается 3 раза по одному разу для каждого сгиба на отрезках поездов, а также проверяется 3 раза на тестовых отрезках. Вы можете видеть, что результаты теста на данных проверки сообщаются.
Перекрестная проверка моделей Keras
Keras предоставляет оболочку, которая делает модели keras совместимыми с методом sklearn cross_validatation. Вы должны обернуть модель keras, используя KerasClassifier
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import KFold, cross_validate
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
def get_model():
model = Sequential()
model.add(Dense(2, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
model = KerasClassifier(build_fn=get_model, epochs=10, batch_size=8, verbose=0)
kf = KFold(n_splits=3, shuffle=True)
X = np.random.rand(10,2)
y = np.random.rand(10,1)
cv_results = cross_validate(model, X, y, cv=kf, return_train_score=False)
print (cv_results)