逻辑回归是一个二分类算法,用来判断某个样本属于哪个类别。
比如:
- 邮件是不是垃圾邮件?
- 病人是否患病?
- 用户是否会流失?
🧠 思想核心:
逻辑回归不是输出一个直接的“类别”,而是:
输出一个概率值(在 0 到 1 之间),然后根据阈值(通常是 0.5)来判断属于哪个类别。
📐 数学公式
逻辑回归的输出是通过 sigmoid 函数 计算出来的概率:
h(x) = sigmoid(w·x + b)
= 1 / (1 + e^-(w·x + b))
x
:输入特征(如年龄、工资等)w
:权重b
:偏置h(x)
:预测为“正类”的概率(比如是癌症的概率)
如果 h(x) > 0.5
→ 预测为正类;否则为负类。
🎯 逻辑回归 vs 线性回归
项目 | 线性回归 | 逻辑回归 |
---|---|---|
任务 | 回归(预测连续数值) | 分类(输出概率+判断类别) |
输出 | 实数(无范围限制) | 概率(范围 0~1) |
输出函数 | 线性函数 | sigmoid 函数 |
应用示例 | 预测房价 | 判断邮件是否为垃圾邮件 |
✅ Python 逻辑回归实战(scikit-learn)
🧪 案例:预测是否通过考试
import numpy as np
from sklearn.linear_model import LogisticRegression
# 输入数据(小时数)
X = np.array([[1], [2], [3], [4], [5], [6]])
# 标签(0=未通过,1=通过)
y = np.array([0, 0, 0, 1, 1, 1])
# 创建模型并训练
model = LogisticRegression()
model.fit(X, y)
# 预测新数据
new_data = np.array([[3.5]])
pred = model.predict(new_data)
proba = model.predict_proba(new_data)
print("预测结果(是否通过):", pred[0])
print("预测概率 [没通过,通过]:", proba[0])
📈 模型评估指标(分类任务)
指标名 | 作用 |
---|---|
Accuracy | 准确率:预测对的比例 |
Precision | 精确率:预测为正类中,实际是正类的比例 |
Recall | 召回率:所有正类中,被正确预测的比例 |
F1-score | 综合考虑精确率和召回率的加权平均 |
AUC | 面积值衡量分类效果(越接近 1 越好) |
🚀 优点与局限
优点 | 缺点 |
---|---|
简单高效,易解释 | 只能处理线性可分的问题 |
输出概率而非直接标签(灵活性) | 对异常值敏感 |
适用于高维稀疏数据(如文本分类) | 难以处理复杂特征交互,效果不如树模型 |
🔧 应用场景
- 医疗:预测疾病概率
- 金融:判断客户是否违约
- 市场营销:客户是否会购买
- NLP:文本情感分析
🛠 想练手?推荐两个项目:
- 泰坦尼克生存预测(Kaggle 初学者首选)
- 垃圾邮件识别(用邮件文本分类)
如果你想,我可以马上帮你搭建一个完整的小项目,带你一起写 ✨
要不要来一个?😊
发表回复