Python SKLearn:逻辑回归概率

3

我正在使用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),其中ij是特征的索引。
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)

这样A就是矩阵p(1) ... p(M)对应于观测值X的矩阵。这个值应该与以下值相同:

LR.predict_proba(X)

然而它们很相似,但又不同。为什么呢?

如果您让 P = A/(1+A),那么 P / P.sum(axis=1).reshape((-1, 1)) 是否与 predict_proba 的输出完全相同? - Fred Foo
太好了,我没有想到要测试概率值是否加起来等于1...谢谢,如果你把这个作为答案发布,我会接受的。 - rwolst
逻辑回归难道不只是估计一个(N+1)系数集吗?也就是说,如果它们是相同的东西,为什么你有"coef(1,1)"和"coef(M,1)"呢? 我有什么遗漏吗? - DrMisha
更准确地说,我可以说“多项式逻辑回归”。关键是存在多个可能的类别或观察结果。 - rwolst
1个回答

3
< p > coef_intercept_ 属性代表你的想法,但由于你忘记进行规范化,因此你的概率计算有误。

P = A / (1 + A)

你应该这样做

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

复现scikit-learn算法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接