返回

scikit learn-Python中的GridSearchCV返回可能最差的参数(对于岭回归)-而不是最佳参数

发布时间:2022-08-21 15:33:13 388
# node.js

我遇到了一个问题,Scikit learn的GridSearchCV给了我一个可能最差的参数,这个参数会导致最差的分数(根MSE),而不是最好的。

我从以下内容开始(当然还有导入的Ridge、GridSearchCV、make\u pipeline、TimeSeriesSplit、numpy、pandas等):

ridge_pipe = make_pipeline(Ridge(random_state=42, max_iter=100000))

tscv = TimeSeriesSplit(n_splits=5)

param_grid = {'ridge__alpha': np.logspace(1e-300, 1e-1, 500)}
grid = GridSearchCV(ridge_pipe, param_grid, cv=tscv, scoring='neg_root_mean_squared_error', 
n_jobs=-1)
grid.fit(news_df, y_battles)
print(grid.best_params_)
print(grid.score(news_df, y_battles))

它提供了以下输出:

{'ridge__alpha': 1.2589254117941673}
-4.067235334106922

这并不是因为我在使用TimeSeriesSplit,而是因为我尝试在GridSearchCV()中使用cv=5而不是cv=tscv,这会导致同样的问题。

我还尝试在单独考虑1e-300的alpha值时找到分数,看看它是否确实比1e-1的分数更好:

param_grid = {'ridge__alpha': [1e-300]}
grid = GridSearchCV(ridge_pipe, param_grid, cv=tscv, 
scoring='neg_root_mean_squared_error', n_jobs=-1)
grid.fit(news_df, y_battles)
print(grid.best_params_)
print(grid.score(news_df, y_battles))

它给了我这个输出:

{'ridge__alpha': 1e-300}
-2.0906161667718835e-13

显然,1e-300的alpha值比1e-1的alpha值有更好的根MSE(~-2e-13),因为使用GridSearchCV的负根MSE与所有其他上下文中的正根MSE具有相同的含义(据我所知)。所以-2e-13的根MSE实际上是2e-13,-4实际上是4。根MSE越低越好。

我试图发挥创造力,而只是提供了一系列价值观:

param_grid = {'ridge__alpha': [1e-1, 1e-50, 1e-60, 1e-70, 1e-80, 1e-90, 1e-100, 1e-300]}
grid = GridSearchCV(ridge_pipe, param_grid, cv=tscv, scoring='neg_root_mean_squared_error', 
n_jobs=-1)
grid.fit(news_df, y_battles)
print(grid.best_params_)
print(grid.score(news_df, y_battles))

输出结果表明同样的问题正在发生:

{'ridge__alpha': 0.1}
-2.0419740158869386

所以,我知道np。日志空间不是问题。有什么想法吗?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像