【问题标题】:Scikit-learn - Can you run RandomizedSearchCV without cross validation?Scikit-learn - 你可以在没有交叉验证的情况下运行 RandomizedSearchCV 吗?
【发布时间】:2015-05-25 06:12:16
【问题描述】:

我想知道您是否可以在不进行交叉验证的情况下运行 RandomizedSearchCV(仅使用简单的训练/测试拆分?

我想这样做是为了能够大致了解哪些参数对我将使用标准交叉验证的更细粒度的调整有用。

代码如下:

pipe = Pipeline(steps=[('gbm', GradientBoostingClassifier())])


param_dist = dict(gbm__max_depth=[3,6,10],
                  gbm__n_estimators=[50,100,500,1000],
                  gbm__min_samples_split=[2,5,8,11],
                  gbm__learning_rate=[0.01,0.05,0.1,0.5,1.0],
                  gbm__max_features=['sqrt', 'log2']
                  )

grid_search = RandomizedSearchCV(pipe, param_distributions=param_dist,cv=???)

grid_search.fit(X_train, y_train)

提前致谢,

【问题讨论】:

  • 可能没有一个简单的解决方案。为什么你宁愿避免交叉验证?我的意思是 CV 是参数拟合的标准方法。它通常是最佳选择,因为它往往更健壮,并且还避免了对训练/测试集的细微过度拟合问题。

标签: python scikit-learn cross-validation


【解决方案1】:

您可以使用cv=ShuffleSplit(n_iter=1) 获得单个随机拆分,或者如果您想要进行特定拆分,则使用cv=PredefinedSplit(...)(我认为仅在 beta 0.16b1 中)。有关选项,请参阅docs

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 2015-06-12
    • 2016-04-25
    • 2018-09-21
    • 2017-04-24
    • 2017-09-02
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多