Может ли GridsearchSV включить рандомизацию для train_test_split - PullRequest
0 голосов
/ 25 октября 2018

В Sklearn есть GridSearchCV для проверки нескольких переменных на функции классификатора, например:

parameters = {
  'learning_rate': [0.001,0.005,0.003],
  'n_estimators': [300,800,1200],
  'criterion': ['friedman_mse','mse','mae'],
  'verbose':[1],
  'loss' : ['deviance','exponential'],
  'random_state':[0]
  }

GBC = GradientBoostingClassifier()
grid = GridSearchCV(GBC, parameters)
grid.fit(X,y )   # X = data,  y = result
best_est = grid.best_estimator_
print(best_est)

predictions = best_est.predict(T) # T contains data to apply it on.

Но что если вы захотите сделать перекрестную проверку?Например, аналогично train_test_split:

  X_train, X_test, y_train, y_test = train_test_split(X, y,  random_state=41)

Здесь у нас есть random_state (что может оказать большое влияние).Можно ли включить GridSearchCV с массивом из нескольких случайных чисел, чтобы убедиться, что он оптимально работает с «большинством» случайных состояний разделения данных / тестов некоторых данных?

Для записи я знаю, что это не так »t внутри GridSearchCV (или, насколько я знаю), я спрашиваю здесь, как может выглядеть такой метод.Возможно, есть какой-нибудь умный способ сделать это?

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете указать ShuffleSplit в качестве генератора перекрестной проверки.

Например:

from sklearn.model_selection import GridSearchCV, ShuffleSplit

GBC = GradientBoostingClassifier()
grid = GridSearchCV(GBC,
                    param_grid=parameters,
                    cv=ShuffleSplit(train_size=X.shape[0],
                                    test_size=.3,
                                    n_splits=5,
                                    random_state=41))
grid.fit(X, y)

Подробнее о ShuffleSplit здесь .

...