我正在使用Python SKLearn模块执行逻辑回归。我有一个因变量向量Y
(从M类中的1个取值)和独立变量矩阵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)
因此A
是p(1) ... p(M)
中观察结果X
的矩阵。这应该与
LR.predict_proba(X)
然而,它们很接近,但不同。为什么是这样?
答案 0 :(得分:3)
coef_
和intercept_
属性代表您的想法,您的概率计算已关闭,因为您忘记了规范化:
P = A / (1 + A)
你应该做
P /= P.sum(axis=1).reshape((-1, 1))