Python中的有界逻辑回归

Posted

技术标签:

【中文标题】Python中的有界逻辑回归【英文标题】:Bounded logistic regression in Python 【发布时间】:2019-06-24 16:17:02 【问题描述】:

scikit-learn 中的standard logistic regression solver 假设回归方程:

P(X) = 1/ (1 + exp(b0 + b1*X1 + ... + bn*Xn))

.. 并使用各种求解程序求解b

对于特定项目,我想将回归方程绑定在 0-a(而不是 0-1)之间,并添加一个变量 c 以使自变量 Xk 居中,例如

P(X) = a / (1 + exp((b0 + b1*X1 + .. + bn*Xn) * (Xk  - c)))

并求解abc

关于如何修改logistic.py 以实现此目的的任何想法/想法?我想修改expit 函数以反映更改后的方程。但是如何让求解器知道还包括新变量ac?是否有任何脚本能够处理我修改后的逻辑回归方程?

【问题讨论】:

我认为,您应该使用 numpy 编写所需的方程,然后在训练模型时通过了解逻辑回归的工作原理来使用它。 通过减去c 来标准化您的数据集并通过除以a 来缩放目标会更容易。 IE。 X[k] -=cY /= a. 如果事先知道 a 和 c,我可以这样做。但它们是求解器在尝试拟合数据时需要包含的变量... 【参考方案1】:

不清楚你需要什么,但是

P(X) = a / (1 + exp(b0 + b1*X1 + .. + bn*Xn) * (Xk  - c))

和这个一样

P(X) = a / (1 + exp(b0 + b1*X1 + .. + bn*Xn + log(Xk)/log(c))

所以用exp(1/bk)替换c

【讨论】:

感谢您的回答,但我错过了一个括号(对不起,很想在这里看到 LaTeX 公式:),并且 (Xk-c) 实际上在指数中。我正在logistic.py 中寻找一个mod 来解决这个稍微修改过的逻辑回归方程

以上是关于Python中的有界逻辑回归的主要内容,如果未能解决你的问题,请参考以下文章

python中的逻辑回归。概率阈值

Python中的约束逻辑回归(结果变量)

python逻辑回归(初级)

Python中的多元逻辑回归显示错误

python中的逻辑回归测试输入格式帮助

Python SKLearn 逻辑回归中的虚拟变量