当前位置: 首页 > article >正文

机器学习算法-逻辑回归

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

🎯 例子背景

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

学习时间(h)是否及格(1=是,0=否)
10
20
31
41
51

新问题:学习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. 基础版(手写核心逻辑)
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 + breturn sigmoid(z)print("学习3.5小时及格概率:", predict(3.5))  # 输出: 0.65
2. 实战版(用scikit-learn)
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}")
 

📊 决策边界可视化

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之间。


总结:逻辑回归就是
① 线性计算 → ② 概率转换 → ③ 阈值判断
像老师通过学习时间判断学生及格可能性,既简单又实用! 🎓→📈

相关文章:

机器学习算法-逻辑回归

今天我们用 「预测考试是否及格」 的例子来讲解逻辑回归,从原理到实现一步步拆解,保证零基础也能懂! 🎯 例子背景 假设你是班主任,要根据学生的「学习时间」预测「是否及格」,手上有以下数据:…...

Office 2024免费下载 安装包

各位办公小能手们,你们知道吗?咱们日常办公经常会用到一个超厉害的软件套件,那就是Office,它全称Microsoft Office,是微软公司开发的。这玩意儿能大大提升个人和团队的办公效率,像文档处理、数据分析、演示…...

Linux云计算训练营笔记day18(Python)

# 猜数字游戏: 程序生产一个 1-100的随机数 # 让用户重复去猜测, 直到猜对为止 # 如果用户输入的数字 大于 随机生成的数字 提示 大了 # 如果用户输入的数字 小于 随机生产的数字 提示 小了 # 否则 猜对了 break # 增加需求 最多猜6次,如果没有猜对,提示 你失…...

Git深入解析功能逻辑与核心业务场景流程

一、Git核心功能逻辑架构 #mermaid-svg-9tj1iCr99u6QenJM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9tj1iCr99u6QenJM .error-icon{fill:#552222;}#mermaid-svg-9tj1iCr99u6QenJM .error-text{fill:#552222;st…...

Opencv4 c++ 自用笔记 03 滑动条、相机与视频操作

1. 相机与视频操作 1.1 打开视频/相机 OpenCV 中 imread() 只能读取静态图像,若要读取视频文件或摄像头流,需要使用 VideoCapture 类: // 构造函数 cv::VideoCapture::VideoCapture(); cv::VideoCapture…...

LINUX528 重定向

2>&1 我的理解: 2>&1,2stderr错误输出,1stdout输出,stderr一般和stdout是分别输出(管道符只传递stdout,据元宝,stderr默认输出到终端;如果重定向符不进行2显示重定向&…...

研华工控机安装Windows10系统,适用UEFI(GPT)格式安装

主要硬件 主板:AIMB-787 、CPU:i5-6500 U盘启动工具:通过网盘分享的文件:rufus-3.20.zip 链接: https://pan.baidu.com/s/1YlFfd-_EhFHCG4sEHBQ8dQ?pwdQT12 提取码: QT12 Win10 22H2 Pro 纯净版系统:通过网盘分享…...

1、树莓派更换软件下载源

树莓派官方系统raspbian自带的是国外的软件源,在国内使用经常会遇到无法下载软件的问题。 以下是把raspbian系统(buster版本)的下载源改为阿里云软件源的方法。 1、修改sources.list文件 sudo nano /etc/apt/sources.list 将初始化中的代…...

历年中山大学计算机保研上机真题

历年中山大学计算机保研上机真题 2025中山大学计算机保研上机真题 2024中山大学计算机保研上机真题 2023中山大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 不连续1的子串 题目描述 给定一个数字 n n n,输出长度为 n n n 的 01…...

Python----目标检测(《SSD: Single Shot MultiBox Detector》论文和SSD的原理与网络结构)

一、SSD:单次多框检测器 1.1、基本信息 标题:SSD: Single Shot MultiBox Detector 作者:Wei Liu (UNC Chapel Hill), Dragomir Anguelov (Zoox Inc.), Dumitru Erhan, Christian Szegedy (Google Inc.), Scott Reed (University of Michiga…...

springboot集成websocket给前端推送消息

一般通常情况下,我们都是前端主动朝后端发送请求,那么有没有可能,后端主动给前端推送消息呢?这时候就可以借助websocket来实现。下面给出一个简单的实现样例。 首先创建一个websocketDemo工程,该工程的整体结构如下&a…...

DrissionPage SessionPage模式:轻量级HTTP请求的利器

引言 在Python自动化领域,DrissionPage以其创新的三模式设计脱颖而出。作为专为HTTP请求优化的SessionPage模式,凭借其轻量级架构和高效性能,成为API调用、数据采集等场景的首选方案。本文将深入解析SessionPage的技术特性、核心优势及典型应…...

0527漏洞原理:XSS笔记

理论知识 01 前端基础知识 1.1 HTML基础 定义&#xff1a;HTML&#xff08;超文本标记语言&#xff09;用于描述网页结构。标准结构&#xff1a; 内嵌脚本&#xff1a; <script>JavaScript代码</script>1.4 JavaScript弹窗函数 函数描述alert("文本&quo…...

智能制造之精读——RPA制造行业常见场景【附全文阅读】

RPA 在制造行业应用广泛&#xff0c;为企业带来显著价值&#xff0c;是极具潜力的智能化解决方案。它能节省成本&#xff0c;降低人力与管理成本&#xff1b;提升运营效率&#xff0c;减少人机交互损耗&#xff1b;提高质量&#xff0c;保障流程准确性&#xff1b;还能增强合规…...

spark shuffle的分区支持动态调整,而hive不支持

根据Spark官方文档&#xff0c;Spark Shuffle分区支持动态调整的核心原因在于其架构设计和执行模型的先进性&#xff1a; 1. 自适应查询执行&#xff08;AQE&#xff09;机制 Spark 3.0引入的AQE特性允许在运行时动态优化执行计划&#xff0c;包括Shuffle分区调整&#xff1a…...

网络安全十大漏洞

1️⃣ 失效的访问控制&#xff08;Broken Access Control&#xff09; 核心问题&#xff1a;用户能访问本应被禁止的资源或操作 攻击案例&#xff1a; 修改URL参数&#xff1a;https://shop.com/order?user_id100 → 改为 user_id101 查看他人订单 直接访问管理员页面&#…...

关于uv 工具的使用总结(uv,conda,pip什么关系)

最近要开发MCP 项目&#xff0c;uv工具使用是官方推荐的方式&#xff0c;逐要了解这个uv工具。整体理解如下&#xff1a; 一.uv工具的基本情况 UV 是一个由 Rust 编写的现代化 Python 包管理工具&#xff0c;旨在通过极速性能和一体化功能替代传统工具&#xff08;如 pip、vi…...

深入剖析 Docker 容器化原理与实战应用,开启技术新征程!

文章目录 前言一、为什么 是Docker &#xff1f;二、Docker 容器化原理分析2.1 镜像&#xff08;Image&#xff09;2.2 容器&#xff08;Container&#xff09;2.3 仓库&#xff08;Registry&#xff09; 三、Docker 容器化实践3.1 Docker安装3.2 创建一个 Docker 镜像3.3 运行…...

Xamarin劝退之踩坑笔记

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

计算机网络(4)——网络层

1.概述 1.1 网络层服务 (1) 网络层为不同主机(Host)之间提供了一种逻辑通信机制 (2)每个主机和路由器都运行网络层协议 发送方&#xff1a;将来自传输层的消息封装到数据报(datagram)中接收方&#xff1a;向传输层交付数据段(segment) 1.2 网络层核心功能 路由选择(routing…...

java 多线程中的volatile关键字作用

文章目录 前置作用一&#xff1a;多线程下&#xff0c;保证可见性作用二&#xff1a;多线程下&#xff0c;禁止指令重排序 前置 保证可见性和保证没有指令重排导致的问题 但是不保证原子性 volatile 常常见到和 static 一起使用&#xff0c;因为 volatile 用在多线程中共享变…...

ESP32基础知识1:项目工程建立和烧录

ESP32基础知识1&#xff1a;项目工程建立和烧录 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、新建工程1. 工程配置2. 依照模板建立项目 三、硬件烧录1. 硬件准备2. 烧录器和ESP32连接3. 电脑端设置4. 烧录成功演示 四、参考文献 一、本文内容与前置知识点 1. 本文内…...

allWebPlugin中间件VLC专用版之录像功能介绍

背景 VLC控件原有接口是不支持录像的&#xff0c;且libVLC提供的接口库&#xff0c;不能获取录像文件完整名称&#xff08;VLC-3.0.11 录制直播时有的无法保存视频的解决方法 - 1CM - 博客园&#xff09;&#xff1b;因此&#xff0c;非常的不友好。为了能够彻底解决这个问题&a…...

Vim 支持多种编程语言编辑器

软件简介 Vim是Vi编辑器的增强版&#xff0c;它提供了更多的功能和快捷键。Vim是一款自由软件&#xff0c;它是由Bram Moolenaar在1991年创建的。Vim支持多种编程语言&#xff0c;包括C、C、Java、Python、Perl等等。它是一款轻量级的编辑器&#xff0c;可以快速打开和编辑大型…...

解决 IDEA 在运行时中文乱码问题

直接说解决办法 编译 IDEA 所在目录的启动的 .vmoptions 文件&#xff0c;添加以下JVM 参数即可 -Dfile.encodingUTF-8如下图所示&#xff0c;Help > Edit Custom VM Options&#xff0c;随后在编辑框中添加-Dfile.encodingUTF-8 的 JVM 参数...

Diffusion Planner:扩散模型重塑自动驾驶路径规划(ICLR‘25)

1. 概述 2025年2月14日&#xff0c;清华大学AIR智能产业研究院联合毫末智行、中科院自动化所和香港中文大学团队&#xff0c;在ICLR 2025会议上发布了Diffusion Planner——一种创新性的基于Diffusion Transformer的自动驾驶规划模型架构。该系统联合建模周车运动预测与自车行…...

华为OD机试真题——阿里巴巴找黄金宝箱 IV(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《阿里巴巴找黄金宝箱 IV》:…...

数据结构:时间复杂度(Time Complexity)和空间复杂度(Space Complexity)

目录 什么是时间复杂度&#xff1f; 如何表示时间复杂度&#xff1f; 为什么需要时间复杂度&#xff1f; 用几个例子理解 怎么分析代码的时间复杂度&#xff1f; 什么是空间复杂度&#xff1f; 举例理解 什么是时间复杂度&#xff1f; 时间复杂度是用来衡量一个算法“…...

CentOS7.9环境离线部署docker和docker-compose的两种方式

目 录 一、yum安装&#xff0c;使用rpm安装包和相关依赖 1.1 准备rpm安装包 1.2 将docker-23.0.4.tar.gz上传至/opt目录下 二、二进制文件方式安装 三、安装docker-compose 一、yum安装&#xff0c;使用rpm安装包和相关依赖 1.1 准备rpm安装包 1&#xff09;在一台与…...

北京大学肖臻老师《区块链技术与应用》公开课:06-BTC-网络

文章目录 比特币工作在应用层&#xff0c;它的底层是一个P2P overlay Network...