Python实现逻辑回归模型_利用LogisticRegression处理二分类问题

张开发
2026/4/15 22:10:27 15 分钟阅读

分享文章

Python实现逻辑回归模型_利用LogisticRegression处理二分类问题
LogisticRegression默认不输出概率需调用predict_proba获取正类概率class_weightbalanced调整损失权重而非重采样decision_function与predict_proba数值不同属正常因后者为前者的sigmoid映射。LogisticRegression 默认不输出概率得手动调 predict_proba很多人跑完 LogisticRegression直接用 predict结果只拿到 0/1 标签但实际需要的是“这个样本是正类的概率”——比如风控里要设阈值、推荐里要排序。默认不返回概率不是模型坏了是设计如此。实操建议立即学习“Python免费学习笔记深入”predict 返回离散类别0 或 1predict_proba 才返回二维数组第二列才是正类即 y1的概率必须确保训练时没禁用概率估计如果用了 solverliblinear 且 n_samples 很小一般没问题但若用了 solversaga 且没设 max_iter可能收敛失败predict_proba 会报 NotFittedError概率校准不一定准默认的 LogisticRegression 输出的 predict_proba 是 Platt scaling 结果对不平衡数据或小样本容易过自信必要时加 CalibratedClassifierCVclass_weightbalanced 不等于重采样它改的是损失函数里的权重遇到正负样本比例悬殊比如 1:100模型倾向于全预测负类。class_weightbalanced 常被当作“自动解决不平衡”的开关但它干的其实很具体在计算 logistic loss 时给少数类样本的损失乘上一个系数n_samples / (n_classes * n_samples_in_class)不改变训练数据本身。实操建议立即学习“Python免费学习笔记深入”它不生成新样本也不删样本所以训练速度不受影响内存占用低和 sample_weight 参数效果类似但更省事若需精细控制比如按业务风险设不同权重还是得手写 sample_weight 数组注意和 scale_pos_weightXGBoost 里常用别混淆——sklearn 的 LogisticRegression 没这参数配合 penaltyl1 时class_weight 仍生效但稀疏解可能让部分特征权重归零间接影响类别权重的实际作用decision_function 和 predict_proba 输出不一致那是正常现象有人对比 decision_function 的输出和 predict_proba 第二列发现数值对不上怀疑模型出 bug。其实这是两个不同映射前者是线性组合 dot(X, coef_) intercept_后者是经 sigmoid 映射后的概率二者本就不该相等。 Trenz AI驱动的社交电商营销平台专为TikTok Shop设计

更多文章