【问题标题】:Is it possible to tune the linear regression (hyper)parameter in sklearn是否可以调整 sklearn 中的线性回归(超)参数
【发布时间】:2020-02-28 15:20:10
【问题描述】:

我开始学习一些 sci-kit learn 和一般的 ML,但我遇到了问题。 我使用线性回归创建了一个模型。 .score 很好(高于 0.8),但我想让它变得更好(也许到 0.9)。 我搜索了 sklearn 的文档并用谷歌搜索了这个问题,但我似乎找不到答案。

我的问题是:是否可以调整 LinearRegression 模型? 如果是的话,我在哪里可以找到它?

#----- Forecast in hours -----#
forecast_out = 48


#----- Import and prep data -----#
using pandas to create X and y
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

#----- Linear Regression-----#
lr = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

lr.fit(x_train, y_train)
lr_confidence = lr.score(x_test, y_test)
print("lr confidence: ", lr_confidence)
x_forecast = np.array(data.drop(['Prediction'],1))[-forecast_out:]
lr_prediction = lr.predict(x_forecast)

【问题讨论】:

  • 提供您的代码的 sn-p 或提供有关您的模型的更多详细信息,以便我们了解哪里有改进的余地
  • 将其添加到问题中。我忘了添加它谢谢:)

标签: python scikit-learn


【解决方案1】:

总是有改进的余地。参数在 LinearRegression 模型中。使用 .get_params() 找出参数名称及其默认值,然后使用 .set_params(**params) 从字典中设置值。 GridSearchCV 和 RandomSearchCV 可以帮助您比您更好、更快地调整它们。

这是一个非常开放的问题,您只需查看文档即可。这一切都在那里,真的,相信我 - 我已经看过了。只是 Google LinearRegression 文档。

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

【讨论】:

  • 谢谢。使用 .get_params(),我看到我已经在 lr = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False) 中指定了参数。现在感觉有点傻:)
  • LinearRegression 没有很多参数,是的。我看到你已经指定了它们。还有许多其他方法可以改进模型。查看集成算法 - BaggingRegressor 或 Stacking,投票集成示例。
【解决方案2】:

sklearn.linear_model.LinearRegression 似乎没有可以调整的超参数。因此,请改用sklearn.linear_model.SGDRegressor,它将为调整超参数提供许多可能性。 它的文档可以在这里找到:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDRegressor.html

【讨论】:

    【解决方案3】:

    不,这是不可能的。 对于超参数调整线性回归,请尝试 Lasso、Ridge 或 ElasticNet

    【讨论】:

      猜你喜欢
      • 2017-06-06
      • 2019-03-03
      • 2020-12-29
      • 2018-06-25
      • 2021-07-04
      • 2018-05-16
      • 2015-01-29
      • 2014-05-05
      • 2020-12-24
      相关资源
      最近更新 更多