GridsearchSV 可以包含 train_test_split 的随机化吗

Can GridsearchSV include a randomization for train_test_split

使用 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 包含在一些随机数的数组中,以确保它与某些数据的 train/test 拆分的 'most' 随机状态一起最佳工作?

郑重声明,我知道这不在 GridSearchCV 中(或者据我所知),我在这里问这样的方法可能是什么样子。也许有一些聪明的方法可以做到这一点?

您可以指定 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)

More on ShuffleSplit here.