机器学习算法-逻辑回归

今天我们用 「预测考试是否及格」 的例子来讲解逻辑回归,从原理到实现一步步拆解,保证零基础也能懂!

🎯 例子背景

假设你是班主任,要根据学生的「学习时间」预测「是否及格」,手上有以下数据:

学习时间(h) 是否及格(1=是,0=否)
1 0
2 0
3 1
4 1
5 1

新问题:学习3.5小时的学生,及格概率有多大?


🌟 逻辑回归核心思想

不是直接预测类别,而是计算属于某类的概率

比如:P(及格|学习3.5h) = 70% → 若阈值设50%,则判定为及格

🔑 关键特点
  1. 输出范围在0~1之间(概率)

  2. S型函数(Sigmoid) 将线性结果转为概率


📈 原理分步拆解

1. 先做线性回归

临时计算 z = a×学习时间 + b

(比如初始假设:z = 0.6×时间 - 1.5)

2. 通过Sigmoid函数转概率

公式:
P(及格) = 1 / (1 + e^(-z))

  • 当z=0时,P=0.5

  • z越大,P越接近1;z越小,P越接近0

3. 计算示例

对于学习3.5小时:
z = 0.6×3.5 - 1.5 = 0.6
P = 1 / (1 + e^(-0.6)) ≈ 0.65

→ 及格概率65%


🛠️ Python代码实现

1. 基础版(手写核心逻辑)
python 复制代码
import numpy as np

# Sigmoid函数
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 假设参数
a = 0.6  # 斜率
b = -1.5 # 截距

# 预测函数
def predict(hours):
    z = a * hours + b
    return sigmoid(z)

print("学习3.5小时及格概率:", predict(3.5))  # 输出: 0.65
2. 实战版(用scikit-learn)
python 复制代码
from sklearn.linear_model import LogisticRegression
import numpy as np

# 准备数据
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)  # 学习时间
y = np.array([0, 0, 1, 1, 1])                 # 是否及格

# 训练模型
model = LogisticRegression()
model.fit(X, y)

# 预测新数据
new_hour = np.array([[3.5]])
prob = model.predict_proba(new_hour)[0][1]  # 获取概率
print(f"及格概率: {prob:.2%}")              # 输出: 64.94%

# 查看参数
print(f"方程: z = {model.coef_[0][0]:.2f}×时间 + {model.intercept_[0]:.2f}")
复制代码

📊 决策边界可视化

python 复制代码
import matplotlib.pyplot as plt

# 绘制数据点
plt.scatter(X, y, color=['red' if i==0 else 'blue' for i in y], label='真实数据')

# 生成概率曲线
X_test = np.linspace(0, 6, 100).reshape(-1,1)
prob_curve = model.predict_proba(X_test)[:,1]
plt.plot(X_test, prob_curve, 'g-', label='概率曲线')

# 标记决策边界(P=0.5对应的X值)
decision_boundary = -model.intercept_ / model.coef_[0]
plt.axvline(x=decision_boundary, linestyle='--', color='black', label='决策边界')

plt.xlabel('学习时间(h)')
plt.ylabel('概率')
plt.legend()
plt.show()

决策边界约在2.5小时(P=0.5的位置)*


🌟 关键知识点

  1. 阈值可调

    • 默认0.5,可根据需求调整(如医疗诊断需更高阈值)
  2. 为什么叫"回归"

    • 底层用了线性回归,只是加了Sigmoid转换
  3. 多分类扩展

    • Softmax代替Sigmoid可处理多分类(如预测ABC等级)
  4. 评估指标

    • 常用准确率、ROC曲线、AUC值

🆚 vs 线性回归

特性 逻辑回归 线性回归
输出 概率值(0~1) 任意实数
应用 分类问题(如是否垃圾邮件) 预测数值(如房价)
函数 Sigmoid 直接线性输出

💡 常见问题

Q:特征需要标准化吗?

A:最好做!逻辑回归虽不受量纲影响,但能加速收敛。

Q:学习时间6小时预测概率>1?

A:不会!Sigmoid函数永远输出0~1之间。


总结:逻辑回归就是
① 线性计算 → ② 概率转换 → ③ 阈值判断

像老师通过学习时间判断学生及格可能性,既简单又实用! 🎓→📈

相关推荐
烟锁池塘柳013 分钟前
【大模型】解码策略:Greedy Search、Beam Search、Top-k/Top-p、Temperature Sampling等
人工智能·深度学习·机器学习
Blossom.1182 小时前
机器学习在智能供应链中的应用:需求预测与物流优化
人工智能·深度学习·神经网络·机器学习·计算机视觉·机器人·语音识别
Gyoku Mint2 小时前
深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
人工智能·pytorch·python·深度学习·神经网络·算法·聚类
葫三生4 小时前
如何评价《论三生原理》在科技界的地位?
人工智能·算法·机器学习·数学建模·量子计算
拓端研究室6 小时前
视频讲解:门槛效应模型Threshold Effect分析数字金融指数与消费结构数据
前端·算法
随缘而动,随遇而安8 小时前
第八十八篇 大数据中的递归算法:从俄罗斯套娃到分布式计算的奇妙之旅
大数据·数据结构·算法
IT古董8 小时前
【第二章:机器学习与神经网络概述】03.类算法理论与实践-(3)决策树分类器
神经网络·算法·机器学习
水木兰亭11 小时前
数据结构之——树及树的存储
数据结构·c++·学习·算法
学技术的大胜嗷12 小时前
离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制
人工智能·深度学习·yolo·目标检测·机器学习
还有糕手12 小时前
西南交通大学【机器学习实验10】
人工智能·机器学习