小编sza*_*ano的帖子

Sklearn 和 StatsModels 给出了截然不同的逻辑回归答案

我正在对布尔 0/1 数据集进行逻辑回归(预测某个年龄给你超过一定金额的薪水的概率),并且我使用 sklearn 和 StatsModels 得到非常不同的结果,其中 sklearn 是非常错误的

我已将 sklearn 惩罚设置为 None,并将截距项设置为 false,以使该函数与 StatsModels 更相似,但我不知道如何使 sklearn 给出合理的答案。

灰线是 0 或 1 处的原始数据点,我只是在绘图上将 1 缩小到 0.1 以便可见。

变量:

# X and Y
X = df.age.values.reshape(-1,1)
X_poly = PolynomialFeatures(degree=4).fit_transform(X)
y_bool = np.array(df.wage.values > 250, dtype = "int")

# Generate a sequence of ages
age_grid = np.arange(X.min(), X.max()).reshape(-1,1)
age_grid_poly =  PolynomialFeatures(degree=4).fit_transform(age_grid)
Run Code Online (Sandbox Code Playgroud)

代码如下:

# sklearn Model
clf = LogisticRegression(penalty = None, fit_intercept = False,max_iter = 300).fit(X=X_poly, y=y_bool)
preds = clf.predict_proba(age_grid_poly)

# …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn statsmodels logistic-regression

4
推荐指数
1
解决办法
1500
查看次数