Как перетасовать данные каждый раз при использовании cross_val_score? - PullRequest
0 голосов
/ 30 апреля 2018

При обучении классификатору хребта я могу выполнить 10-кратную перекрестную проверку следующим образом:

clf = linear_model.RidgeClassifier()
n_folds = 10
scores = cross_val_score(clf, X_train, y_train, cv=n_folds)
scores
array([0.83236107, 0.83937346, 0.84490172, 0.82985258, 0.84336609,
       0.83753071, 0.83753071, 0.84213759, 0.84121622, 0.84398034])

Если я хочу снова выполнить 10-кратную перекрестную проверку и я использую:

scores = cross_val_score(clf, X_train, y_train, cv=n_folds)

Я получаю те же результаты.

Таким образом, кажется, что данные разделяются одинаково оба раза. Есть ли способ случайного разделения данных на n_folds каждый раз, когда я выполняю перекрестную проверку?

1 Ответ

0 голосов
/ 30 апреля 2018

Что вы захотите сделать, так это создать свои собственные экземпляры объекта Straified K Folds и передать его аргументу cv в cross_val_score. Таким образом, вы можете предоставить разные случайные начальные значения для разделения данных.

from sklearn.model_selection import StratifiedKFold
clf = linear_model.RidgeClassifier()
for n in range(5):
     strat_k_fold = StratifiedKFold(n_splits=10, shuffle=False, random_state=n)
     scores = cross_val_score(clf, X_train, y_train, cv=strat_k_fold)
...