如何调整sklearn中Logistic Regression参数使拟合曲线更平滑?
Logistic Regression拟合曲线过于陡峭的解决方法
关键调整参数:C
你当前设置的C=1e5是正则化强度的倒数——C值越大,正则化约束越弱,模型容易过度拟合,导致分类边界(或概率曲线)变得异常陡峭。要让曲线更平滑,减小C的值即可,以此增强正则化强度,限制模型的复杂度。
具体修改步骤
- 降低
C的取值,比如尝试C=1、C=0.1这类较小的数值,根据实际拟合效果微调:
clf = LogisticRegression(C=1, fit_intercept=True) # 减小C,增强正则化约束 clf.fit(X.reshape(-1,1), y)
- 注意:你代码中绘制的
a_voir是模型的分类预测结果(非0即1),本身就是阶跃式的。如果要查看平滑的概率拟合曲线,应该绘制模型输出的概率值,比如你已经计算好的loss,或者用predict_proba方法:
plt.plot(X_test, loss) # 绘制平滑的sigmoid概率曲线,替代阶跃的分类结果
原理说明
Logistic Regression中的C参数控制正则化(默认是L2正则化)的强度:
C越小,正则化项的权重越高,模型会尽量压缩系数的绝对值,使得sigmoid曲线的斜率变小,从而呈现更平滑的过渡。C越大,正则化约束越弱,模型系数可能变得极大,导致sigmoid曲线在分界点附近急剧变化,出现陡峭的跳变效果。
内容的提问来源于stack exchange,提问作者Aleksander
相关产品推荐
相关产品推荐

