Если я правильно понял, вы хотели бы получить индивидуальные оценки по каждому образцу в вашем тестовом сплите для случая с самым высоким показателем CV. Если это так, вы должны использовать один из тех генераторов CV, которые дают вам контроль над разделенными индексами, например, здесь: http://scikit -learn.org / stable / tutorial / statistics_inference / model_selection.html # cross -validation-генераторы
Если вы хотите рассчитать оценки для нового тестового образца с моделью с наилучшими показателями, то функции predict_proba()
, равной RandomizedSearchCV
, будет достаточно, учитывая, что ваша базовая модель поддерживает ее.
Пример:
import numpy
skf = StratifiedKFold(n_splits=10, random_state=0, shuffle=True)
scores = cross_val_score(svc, X, y, cv=skf, n_jobs=-1)
max_score_split = numpy.argmax(scores)
Теперь, когда вы знаете, что ваша лучшая модель происходит в max_score_split
, вы можете получить это разделение самостоятельно и подогнать его под вашу модель.
train_indices, test_indices = k_fold.split(X)[max_score_split]
X_train = X[train_indices]
y_train = y[train_indices]
X_test = X[test_indices]
y_test = y[test_indices]
model.fit(X_train, y_train) # this is your model object that should have been created before
И, наконец, получите свои прогнозы по:
model.predict_proba(X_test)
Я сам не тестировал код, но должен работать с небольшими изменениями.