Joh*_*kup 5 python scikit-learn logistic-regression seaborn
我同时使用 Scikit-Learn 和 Seaborn 逻辑回归函数——前者用于提取模型信息(即对数赔率、参数等),后者用于绘制拟合概率估计的结果 sigmoidal 曲线。
也许我的直觉对于如何解释这个情节是不正确的,但我似乎没有得到我期望的结果:
#Build and visualize a simple logistic regression
ap_X = ap[['TOEFL Score']].values
ap_y = ap['Chance of Admit'].values
ap_lr = LogisticRegression()
ap_lr.fit(ap_X, ap_y)
def ap_log_regplot(ap_X, ap_y):
plt.figure(figsize=(15,10))
sns.regplot(ap_X, ap_y, logistic=True, color='green')
return None
ap_log_regplot(ap_X, ap_y)
plt.xlabel('TOEFL Score')
plt.ylabel('Probability')
plt.title('Logistic Regression: Probability of High Chance by TOEFL Score')
plt.show
Run Code Online (Sandbox Code Playgroud)
看起来不错,但是我尝试使用predict_probaScikit-Learn 中的函数来查找Chance to Admit给定某个任意值的概率TOEFL Score(在本例中为108、104和 112):
eight = ap_lr.predict_proba(108)[:, 1]
four = ap_lr.predict_proba(104)[:, 1]
twelve = ap_lr.predict_proba(112)[:, 1]
print(eight, four, twelve)
Run Code Online (Sandbox Code Playgroud)
我得到的地方:
[0.49939019] [0.44665597] [0.55213799]
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎表明托福分数为 112,根据此数据集,个人有 55% 的机会被录取。如果我要从 x 轴上的 112 延长一条垂直线到 sigmoid 曲线,我预计交点在 0.90 左右。
我是否正确解释/建模?我意识到我正在使用两个不同的包来计算模型系数,但是使用另一个使用不同数据集的模型,我似乎得到了符合逻辑曲线的正确预测。
有什么想法还是我完全不准确地建模/解释了这个?
经过一番搜索后,交叉验证为我的问题提供了正确的答案。尽管它已经存在于 Cross-Validated 上,但我也想在 Stack Overflow 上提供这个答案。
简而言之,Scikit-Learn 自动向逻辑模型添加正则化惩罚,从而缩小系数。Statsmodels 不添加此惩罚。显然没有办法关闭它,因此必须将实例化C=中的参数设置LogisticRegression为某个任意高的值,例如C=1e9。
尝试此操作并将 Scikit-Learn与(使用 statsmodels 进行计算)predict_proba()生成的 S 形图进行比较后,概率估计值一致。regplot
链接到全文:https://stats.stackexchange.com/questions/203740/logistic-regression-scikit-learn-vs-statsmodels
| 归档时间: |
|
| 查看次数: |
2402 次 |
| 最近记录: |