【问题标题】:How to manually set the range of coefficients on sklearn如何在sklearn上手动设置系数范围
【发布时间】:2022-01-04 04:39:58
【问题描述】:

我正在尝试在 sklearn 中拟合以下类型的回归方程

y=ax+bx^2+cx^3+dx^5.......

我对 a 的范围有一个条件,即 a 应该在 amin 和 amax 之间。有办法吗?

【问题讨论】:

  • 您是否有确保所有系数为正的约束?因为如果是的话,将positive = True 传递给sklearn.linear_model.LinearRegression 就可以了。如果没有,此 SO 帖子 (stackoverflow.com/a/48831113/13095028) 的答案可能会对您有所帮助
  • 不,我没有 a 不应该为负的约束。我只是希望它的值在一定范围内。
  • 在这种情况下,使用 sklearn 可能不是一个简单的解决方案。我链接的 SO 帖子是指需要手动设置线性回归并使用支持设置约束的求解器的答案

标签: python scikit-learn mlr


【解决方案1】:

使用 sklearn 无法做到这一点(我知道)。

sklearn.linear_model.LinearRegression 仅允许通过在 LinearModel 构造函数中指定 positive=True 来实现非负最小二乘。在后台 scipy.optimize.nnls 用于此目的。

但是,您想要的约束线性回归模型可以使用 scipy.optimize.lsq_linear.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-01
    • 2014-07-30
    • 1970-01-01
    • 2012-04-30
    • 2020-03-09
    • 2012-09-06
    • 2019-06-11
    • 2011-01-12
    相关资源
    最近更新 更多