Python SKLearn:逻辑回归概率

Posted

技术标签:

【中文标题】Python SKLearn:逻辑回归概率【英文标题】:Python SKLearn: Logistic Regression Probabilities 【发布时间】:2013-12-24 22:11:00 【问题描述】:

我正在使用 Python SKLearn 模块执行逻辑回归。我有一个因变量向量 Y(从 M 个类中取值)和自变量矩阵 X(具有 N 个特征)。我的代码是

        LR = LogisticRegression()
        LR.fit(X,np.resize(Y,(len(Y))))

我的问题是,LR.coef_LR.intercept_ 代表什么。我最初认为他们持有 intercept(i)coef(i,j) s.t. 的值。

log(p(1)/(1-p(1))) = intercept(1) + coef(1,1)*X1 + ... coef(1,N)*XN
.
.
.
log(p(M)/(1-p(M))) = intercept(M) + coef(M,1)*X1 + ... coef(M,N)*XN

其中p(i) 是具有[X1, ... ,XN] 特征的观察属于i 类的概率。但是,当我尝试转换时

V = X*LR.coef_.transpose()
U = V + LR.intercept_
A = np.exp(U)
A/(1+A)

所以Ap(1) ... p(M) 的矩阵,用于X 中的观察。这应该是相同的值

LR.predict_proba(X)

但是它们很接近,但又不同。为什么是这样?

【问题讨论】:

如果让P = A/(1+A)P / P.sum(axis=1).reshape((-1, 1))predict_proba的输出是不是一模一样? 宾果游戏,没想到要测试添加到 1 的概率值...谢谢,如果您将此作为答案发布,我会接受。 逻辑回归不只估计一组 (N+1) 系数吗?即如果它们是相同的,为什么你有“coef(1,1)”和“coef(M,1)”?我错过了什么吗? 更准确地说,我可以说“多项逻辑回归”。关键是可以有多个可能的类或观察。 【参考方案1】:

coef_intercept_ 属性代表您的想法,您的概率计算因您忘记归一化而关闭:之后

P = A / (1 + A)

你应该这样做

P /= P.sum(axis=1).reshape((-1, 1))

重现scikit-learn algorithm。

【讨论】:

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

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

python逻辑回归怎么求正系数

Sklearn 和 StatsModels 给出了非常不同的逻辑回归答案

如何在sklearn中获得逻辑回归模型的对数似然?

sklearn Python 和逻辑回归

python sklearn逻辑回归怎么调参