【问题标题】:Can GridsearchSV include a randomization for train_test_splitGridsearchCV 能否包含 train_test_split 的随机化
【发布时间】:2019-03-29 12:25:47
【问题描述】:

使用 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 中包含几个随机数的数组,以确保它在某些数据的训练/测试拆分的“大多数”随机状态下以最佳方式工作?

为了记录,我知道这不在 GridSearchCV 内(或据我所知),我在这里问这种方法可能是什么样的。也许有一些聪明的方法可以做到这一点?

【问题讨论】:

    标签: python scikit-learn sklearn-pandas


    【解决方案1】:

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

    【讨论】:

    • 惊人的不知道这是可能的。
    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2015-05-24
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多