Python logistic回归与回归系数

Python logistic回归与回归系数,python,numpy,scikit-learn,logistic-regression,Python,Numpy,Scikit Learn,Logistic Regression,我试图确定从逻辑回归(来自sklearn库)估计的β是否与我使用逻辑函数(1/(1+exp(-(b*x))创建结果时使用的β匹配或接近。以下是我使用的代码 import numpy as np from sklearn.linear_model import LogisticRegression a = np.random.random_sample(100) * 12 - 6 a = np.sort(a) t = 1/(1 + np.exp(-1 * (6 * (a)))) # I crea

我试图确定从逻辑回归(来自sklearn库)估计的β是否与我使用逻辑函数(1/(1+exp(-(b*x))创建结果时使用的β匹配或接近。以下是我使用的代码

import numpy as np
from sklearn.linear_model import LogisticRegression

a = np.random.random_sample(100) * 12 - 6
a = np.sort(a)
t = 1/(1 + np.exp(-1 * (6 * (a)))) # I create a beta of 6
for i in range(len(t)):
    if t[i] >= 0.5:
        t[i] = 1
    else:
        t[i] = 0
a = np.array([a]).T
ones = np.array([[1]*len(a)]).T
a = np.concatenate((ones, a), axis=1)
lg = LogisticRegression()
lg.fit(a, t)
print(lg.coef_) # the estimated beta from the logistic regression model is [[ 0.24941991  2.41880381]]
我预设的贝塔系数是6,然而,逻辑回归的贝塔系数是2.39662781。尽管我只对1和0进行了近似计算,但这两个贝塔系数仍然相差太大。此外,当我增加我预设的贝塔系数时,模型中估计的贝塔系数有时会增加,但有时会减少,例如,如果我将贝塔系数预设为如果为7,则根据模型估计的β值为2.15344631


有人能给我解释一下发生了什么事吗?或者一个估计的β如何接近我创建的β?

逻辑回归是一个分类器,而不是一个回归器。当你用逻辑函数将实际值折叠为0和1时,你会删除关于正负示例之间实际分界线斜率的信息n

beta的值决定了0和1之间的直线的陡度。要获得更高的beta值,需要相邻0和1值之间的间隙更小。例如,如果将
a=np.random.random_sample(100)*12-6
替换为
a=np.linspace(-6,6,99)
如果使用
a=np.linspace(-6,6999),您将获得大约
2.4的测试版
beta大约是
5.2
。但是你不应该期望恢复原始值,因为损失函数是0和1的交叉熵,而不是原始线性值的均方误差,因此优化器没有奖励来恢复原始斜率,只是为了正确分类