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)st

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)

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

4

1 回答 1

3

coef_intercept_属性代表您的想法,您的概率计算已关闭,因为您忘记了标准化:之后

P = A / (1 + A)

你应该做

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

重现scikit-learn 算法

于 2013-12-07T15:36:29.447 回答