GridSearchCV 处理的出口与评分值连接

Posted

技术标签:

【中文标题】GridSearchCV 处理的出口与评分值连接【英文标题】:Exit of GridSearchCV processing connect with scoring value 【发布时间】:2019-03-31 09:14:55 【问题描述】:

我正在使用GridSearchCV 根据LinearRegression() 返回的MSE 找到PolynomialFeature 的最佳度数。

GridSearchCV 之前,我首先使用了一个循环,当 MSE >10K 时该循环停止。 为了时间优化,我如何使用GridSearchCV() 实现相同类型的“退出循环”

skf2 = StratifiedShuffleSplit(n_splits=4, train_size = 0.8,random_state =63)
start = time.time()

poly_linear = Pipeline([('poly', PolynomialFeatures()),
                      ('Linear', LinearRegression(fit_intercept =False))])

parameters = 'poly__degree': [1,2,3,4,5]

grid_search_lin = GridSearchCV(poly_linear, parameters, cv=skf2, n_jobs=-1, scoring='mean_squared_error').fit(X_l, Y_l)
print('timer',time.time() - start,'s')

【问题讨论】:

请澄清更多。 "I first used a loop which was stopped when MSE is >10K",在 GridSearchCV 之前你好吗? 我只是使用了 for 循环和 break 条件,在每次迭代中,我检查我的模型的 MSE 是否 > 10K:@987654330 @ 【参考方案1】:

GridSearchCV 是一个详尽的搜索,即它考虑 所有 给定的参数 ([1,2,3,4,5])。我不知道 GridSearchCV 可能会出现 exit loop。 如果时间是一个问题,您可以 (1) 减少参数网格的空间,(2) 减少 cv 迭代次数(由 skf2 中的 n_splits 管理),(3) 随机使用 RandomizedSearchCV从您的网格中选择参数。就模型选择质量而言,两者都不是一个好的选择,但无论如何都会花费更少的时间。

另外,不知道你为什么不适合拦截。除非有特定原因,否则最好使用截距拟合回归,因为它会减少模型偏差。

希望对你有帮助

【讨论】:

对于fit_intercept 听说,在机器学习中最好设置为 false 。我正在考虑以一种可以在过程中检查grid_search.cv_results 并停止它的方式使用joblib 多处理,我的情况是否得到验证。 @lelchim 不能真正建议在多处理条件下停止,但就fit_intercept 而言 - 通常没有理由相信您试图近似的超平面LinearRegression 应该经过原点(即没有截距),因此,最好拟合截距。

以上是关于GridSearchCV 处理的出口与评分值连接的主要内容,如果未能解决你的问题,请参考以下文章

将 OneClassSVM 与 GridSearchCV 结合使用

如何确定 GridSearchCV 中每个评分指标的最佳参数和最佳分数

GridSearchCV 对平均绝对误差的评分

在 Gridsearchcv 中评分

为啥当我将 GridSearchCV 与 roc_auc 评分一起使用时,grid_search.score(X,y) 和 roc_auc_score(y, y_predict) 的分数不同?

如何使用 sklearn 中的 GridSearchCV 设置自己的评分以进行回归?