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 与 roc_auc 评分一起使用时,grid_search.score(X,y) 和 roc_auc_score(y, y_predict) 的分数不同?