正在加载 Python 运行环境...
首次加载可能需要 10-20 秒,请耐心等待
课程首页

Python 数据分析实战课程

通过10个真实项目,从零基础掌握Python数据分析核心技能。每个项目都配有交互式代码编辑器,边学边练,即学即用。

10
实战项目
30+
Python 核心概念
20+
数据分析技术
100%
浏览器内运行

学习路径

1销售记录清洗器
2成绩统计小工具
3用户行为分类器
4电商订单聚合分析
5气温异常检测
6销售趋势滑动窗口
7多表关联分析
8RFM用户价值模型
9A/B测试快速分析
10销售预测数据流水线

快速开始

  1. 选择项目 — 从左侧导航栏选择一个项目开始学习
  2. 阅读知识点 — 了解每个项目涉及的Python语法和数据分析方法
  3. 运行代码 — 使用内置代码编辑器,点击"运行代码"查看结果
  4. 修改实验 — 自由修改代码参数,观察输出变化
  5. 完成挑战 — 尝试进阶挑战,巩固所学知识
  6. 标记完成 — 完成学习后点击底部按钮标记进度

销售记录清洗器

学习使用Python基础数据结构处理真实业务中的脏数据,掌握缺失值识别和异常值过滤的核心方法。

列表 · 字典 · for循环 · if判断 缺失值识别 · 异常值过滤 难度:入门

🎯 学习目标

  • 掌握Python列表和字典的基本操作
  • 学会使用for循环遍历数据
  • 理解if条件判断在数据清洗中的应用
  • 能够识别和处理None(缺失值)和负数(异常值)
  • 输出清洗后的数据统计报告

📚 知识储备

  • Python基础语法:变量赋值、print输出
  • 数据类型:了解int、float、str、None的基本概念
  • 简单逻辑:理解"如果...那么..."的条件判断思路

🔑 核心知识点

1. 字典(Dictionary)

字典是Python中存储"键值对"的数据结构,类似现实中的名片——通过名字(键)查找电话(值)。例如 {"name": "张三", "age": 25},用 dict["name"] 就能获取"张三"。

2. 列表(List)

列表是有序的数据集合,用方括号 [] 表示。可以存放多个元素,通过索引(从0开始)访问。例如 [1, 2, 3][0] 得到 1。

3. for循环

for循环用于遍历序列中的每个元素。在数据分析中,我们经常用for循环逐条检查数据记录。

4. None与缺失值

None表示"没有值",在数据分析中代表缺失数据。处理时需要用 is None 来判断,而不能用 == None

💻 项目实战

完整代码 — 销售记录清洗器

📊 运行结果

========== 销售记录清洗报告 ========== 原始数据:10 条 发现问题数据:4 条 --- 问题详情 --- [A002] 无线鼠标 - 价格为空 [A003] 机械键盘 - 价格为负数: -299 [A006] 耳机 - 价格为空 [A007] 摄像头 - 价格为负数: -199 [A009] 音箱 - 数量为空 --- 清洗后有效数据(6条)--- 订单号: A001 | 商品: 笔记本电脑 | 价格: 5999 | 数量: 1 订单号: A004 | 商品: 显示器 | 价格: 2499 | 数量: 0 订单号: A005 | 商品: USB集线器 | 价格: 89 | 数量: 3 订单号: A008 | 商品: 鼠标垫 | 价格: 49 | 数量: 5 订单号: A010 | 商品: 数据线 | 价格: 29 | 数量: 10 --- 统计摘要 --- 有效订单总金额: 8,665 元 平均订单金额: 1,733.0 元 最高金额: 5,999 元(笔记本电脑)

🏆 进阶挑战

挑战1:多条件过滤

在清洗的基础上,过滤掉数量为0的订单(如A004显示器),并计算过滤后的总金额变化。

挑战2:数据修复

对于价格为None的订单,尝试用同类商品的平均价格进行填充,而不是直接删除。

挑战3:分类统计

将有效订单按金额分为"高(>1000)"、"中(100-1000)"、"低(<100)"三档,统计各档订单数量。

📖 拓展资源

成绩统计小工具

学习从文本数据中提取信息,使用Python内置函数完成描述性统计分析,计算均值、中位数等关键指标。

文件读取 · split() · max/min/sum 描述性统计 · 均值 · 中位数 · 极差 难度:入门

🎯 学习目标

  • 学会使用split()方法解析CSV格式文本数据
  • 掌握max()、min()、sum()、len()等内置函数
  • 理解并手动实现均值和中位数的计算
  • 能够计算及格率和各科最高/最低分
  • 输出格式化的统计报告

📚 知识储备

  • 字符串操作:了解字符串的基本概念
  • 数学运算:理解加减乘除和平均值的概念
  • 排序概念:知道什么是从小到大排列

🔑 核心知识点

1. split() 字符串分割

split(",") 将字符串按逗号分割成列表。这是解析CSV数据最常用的方法,类似Excel中按分隔符分列。

2. 列表推导式

[int(x) for x in list] 可以快速将字符串列表转换为整数列表,比写循环更简洁高效。

3. 中位数计算

将数据排序后,如果数据个数是奇数取中间值,偶数取中间两个数的平均值。中位数比均值更抗极端值影响。

💻 项目实战

完整代码 — 成绩统计小工具

📊 运行结果

========== 成绩统计报告 ========== 学生人数:8 人 --- 各科统计 --- 【语文】 最高分: 95 | 最低分: 68 | 平均分: 83.4 | 中位数: 86.5 【数学】 最高分: 96 | 最低分: 79 | 平均分: 88.4 | 中位数: 89.0 【英语】 最高分: 95 | 最低分: 76 | 平均分: 86.3 | 中位数: 87.5 --- 各科及格率 --- 语文及格率: 100.0% 数学及格率: 100.0% 英语及格率: 100.0% --- 总分排名 --- 第1名: 吴十 - 总分 277 第2名: 孙八 - 总分 272 第3名: 李四 - 总分 273

🏆 进阶挑战

挑战1:标准差计算

手动实现标准差公式:先求每个值与均值之差的平方,再求平均,最后开平方根(使用 **0.5)。

挑战2:成绩等级

将每科成绩转换为等级:90-100为A,80-89为B,70-79为C,60-69为D,60以下为F。统计各等级人数。

挑战3:偏科检测

找出各科成绩差异最大的学生(最高分与最低分之差最大),标记为"偏科"。

📖 拓展资源

用户行为分类器

学习使用字典嵌套、多条件分支和集合去重,实现用户活跃度分层,是用户运营分析的基础技能。

字典嵌套 · 条件分支 · 集合去重 用户分层 · 高/中/低活跃度 难度:基础

🎯 学习目标

  • 掌握字典的嵌套使用和多层访问
  • 学会使用if-elif-else多条件分支
  • 理解集合(set)去重的原理和应用
  • 能够根据多维度指标对用户进行分层
  • 输出用户分层统计报告

📚 知识储备

  • 字典基础:了解字典的创建和基本访问
  • if-else语句:理解条件判断的基本语法
  • 业务概念:了解"用户活跃度"的基本含义

🔑 核心知识点

1. 字典嵌套

字典的值可以是另一个字典,形成嵌套结构。例如 result["高活跃"]["用户列表"] 可以访问两层嵌套的数据,适合组织多层级分类结果。

2. if-elif-else 多分支

当需要判断多个互斥条件时,使用elif链。Python会从上到下依次检查,一旦某个条件为True就执行对应代码块,跳过后续判断。

3. 集合(set)去重

集合是不允许重复元素的数据结构。将列表转为集合 set(list) 即可自动去重,常用于统计不重复的用户数、类别数等。

💻 项目实战

完整代码 — 用户行为分类器

📊 运行结果

========== 用户行为分类报告 ========== 总用户数:8 人 --- 分层标准 --- 高活跃:登录 >= 30次 且 消费 >= 1000元 中活跃:登录 >= 10次 或 消费 >= 300元 低活跃:其他用户 --- 高活跃用户(2人)--- 小明 - 登录45次,消费2800元 小王 - 登录50次,消费3200元 --- 中活跃用户(4人)--- 小红 - 登录12次,消费350元 小美 - 登录30次,消费1500元 小李 - 登录25次,消费980元 小张 - 登录15次,消费420元 --- 低活跃用户(2人)--- 小刚 - 登录8次,消费120元 小华 - 登录3次,消费50元 --- 汇总 --- 高活跃占比: 25.0%,贡献总消费: 66.9% 中活跃占比: 50.0%,贡献总消费: 32.5% 低活跃占比: 25.0%,贡献总消费: 0.6%

🏆 进阶挑战

挑战1:RFM简易版

在现有分层基础上,增加"最近登录天数"维度,将用户分为8个类别(每个维度高/低两个级别)。

挑战2:用户画像标签

为每个用户生成画像标签,如"高频低消"、"低频高消"等,并统计各标签人数。

📖 拓展资源

电商订单聚合分析

学习列表推导式、lambda匿名函数和排序,实现按用户维度聚合订单数据,是电商数据分析的核心操作。

列表推导式 · lambda · sort排序 分组聚合 · Top N分析 难度:基础

🎯 学习目标

  • 掌握列表推导式的写法和应用场景
  • 理解lambda匿名函数的语法和用途
  • 学会使用sort()和sorted()进行自定义排序
  • 实现按用户ID分组聚合计算订单总额
  • 输出Top N用户排名

📚 知识储备

  • 列表基础:了解列表的创建和遍历
  • 字典操作:了解字典的键值对操作
  • 函数概念:初步理解函数的定义和调用

🔑 核心知识点

1. 列表推导式

[表达式 for 变量 in 序列 if 条件] 是Python的特色语法,一行代码完成"筛选+转换"。比传统for循环更简洁,执行效率也更高。

2. lambda匿名函数

lambda x: x["amount"] 定义了一个没有名字的简单函数。常配合sorted()使用,指定按字典中某个字段排序。

3. 分组聚合思路

使用字典实现分组:遍历订单列表,以user_id为键累加金额。这是SQL中GROUP BY的Python实现方式。

💻 项目实战

完整代码 — 电商订单聚合分析

📊 运行结果

========== 电商订单聚合分析 ========== 总订单数:12 笔 涉及用户数:5 人 订单总金额:4,279 元 --- 用户消费排名 --- 第1名: U005 - 3笔订单,总额 1,299 元,占比 30.4% 第2名: U001 - 4笔订单,总额 1,086 元,占比 25.4% 第3名: U002 - 3笔订单,总额 857 元,占比 20.0% 第4名: U004 - 2笔订单,总额 848 元,占比 19.8% 第5名: U003 - 2笔订单,总额 238 元,占比 5.6% --- 消费分布 --- 人均消费: 855.8 元 最高消费: 1,299 元 最低消费: 238 元

🏆 进阶挑战

挑战1:二八分析

计算排名前20%的用户贡献了多少比例的总消费额,验证"二八定律"是否成立。

挑战2:客单价分析

计算每个用户的平均客单价(总额/订单数),找出"高客单价低频次"的潜力用户。

挑战3:消费等级划分

使用分位数将用户分为VIP、高级、普通三个等级,并输出各等级的用户列表。

📖 拓展资源

气温异常检测

学习使用NumPy进行数值计算,掌握3σ原则和Z-score异常检测方法,是数据质量监控的核心技能。

NumPy数组 · 布尔索引 · 标准差 3σ原则 · Z-score异常检测 难度:中级

🎯 学习目标

  • 学会创建和操作NumPy数组
  • 掌握NumPy的统计函数:mean、std、argmax等
  • 理解布尔索引的原理和使用
  • 掌握3σ原则和Z-score异常值检测方法
  • 能够检测时间序列数据中的异常点

📚 知识储备

  • Python基础:完成前4个项目
  • 数学概念:了解均值和标准差的含义
  • 统计概念:初步了解正态分布的概念

🔑 核心知识点

1. NumPy数组

NumPy数组是Python数值计算的基础。与列表不同,NumPy数组支持向量化运算——对整个数组执行数学操作,无需写循环,速度更快。

2. 布尔索引

arr[arr > threshold] 使用条件表达式生成布尔数组,直接筛选出满足条件的元素。这是NumPy最强大的特性之一。

3. Z-score标准化

Z-score = (x - 均值) / 标准差。Z-score的绝对值越大,说明数据点离均值越远。通常|Z| > 2被认为是异常值。

💻 项目实战

完整代码 — 气温异常检测

📊 运行结果

========== 气温异常检测报告 ========== 数据范围:365天 平均气温:25.0°C 标准差:5.0°C --- 3σ原则检测(阈值:±10.0°C)--- 检测到 3 个异常日期: 2024-02-16 | 气温: 45.0°C | Z-score: 4.00 | 偏差: +20.0°C 2024-07-01 | 气温: -5.0°C | Z-score: -6.00 | 偏差: -30.0°C 2024-10-11 | 气温: 42.0°C | Z-score: 3.40 | 偏差: +17.0°C --- 统计摘要 --- 异常数据占比: 0.8% 最高气温: 45.0°C 最低气温: -5.0°C 正常温度范围: [15.0°C, 35.0°C]

🏆 进阶挑战

挑战1:滑动窗口异常检测

使用7天滑动窗口计算局部均值和标准差,检测局部异常(而非全局异常),提高检测灵敏度。

挑战2:IQR方法

使用四分位距(IQR)方法检测异常值:低于Q1-1.5*IQR或高于Q3+1.5*IQR的为异常值,对比与Z-score方法的差异。

挑战3:异常值修复

将检测到的异常温度替换为前后7天的平均值,输出修复前后的对比。

📖 拓展资源

销售趋势滑动窗口

学习切片操作、自定义函数和列表累积,实现移动平均计算和趋势平滑,是时间序列分析的基础技术。

切片 · 自定义函数 · 列表累积 移动平均 · 趋势平滑 难度:中级

🎯 学习目标

  • 掌握Python切片操作的高级用法
  • 学会定义和使用自定义函数
  • 理解移动平均的原理和计算方法
  • 能够使用累积方法计算趋势指标
  • 对比原始数据与平滑数据的差异

📚 知识储备

  • NumPy基础:完成项目五
  • 函数概念:了解def定义函数的基本语法
  • 数学概念:理解平均值的计算方法

🔑 核心知识点

1. 切片操作

data[i:i+n] 从第i个位置取n个元素。切片是Python处理序列数据的利器,结合循环可以实现滑动窗口效果。

2. 自定义函数

def moving_average(data, window): 将重复逻辑封装为函数。好的函数应该有清晰的参数和返回值,便于复用。

3. 移动平均

移动平均用窗口内数据的平均值代替中心点的值,可以平滑短期波动,揭示长期趋势。窗口越大越平滑,但滞后也越大。

💻 项目实战

完整代码 — 销售趋势滑动窗口

📊 运行结果

========== 销售趋势分析报告 ========== 数据天数:90天 --- 原始数据统计 --- 总销售额: 18,012.35 元 日均销售: 200.14 元 最高日销: 261.67 元 最低日销: 138.46 元 波动范围: 123.21 元 --- 7日移动平均统计 --- 平滑后日均: 200.08 元 平滑后最高: 238.95 元 平滑后最低: 158.40 元 波动范围: 80.55 元(降低34.6%) --- 趋势分析 --- 前30天平均: 201.85 元 中30天平均: 199.62 元 后30天平均: 198.95 元 整体趋势: 基本平稳,略有下降

🏆 进阶挑战

挑战1:加权移动平均

实现加权移动平均:越近的数据权重越大(如权重为[1,2,3,4,5,6,7]),对比与简单移动平均的效果差异。

挑战2:趋势拐点检测

检测移动平均线的"拐点"(从上升到下降或反之),标记趋势变化的时间点。

挑战3:多窗口对比

同时计算3日、7日、14日移动平均,输出不同窗口下波动范围的对比表格。

📖 拓展资源

多表关联分析

学习字典映射、列表合并和异常处理,实现类似SQL JOIN的多表关联,发现数据一致性问题。

字典映射 · 列表合并 · 异常处理 vlookup式关联 · 数据一致性检查 难度:中级

🎯 学习目标

  • 掌握使用字典实现表关联的方法
  • 学会try-except异常处理机制
  • 理解左连接、内连接的区别
  • 能够检测和报告数据一致性问题
  • 输出关联后的完整数据报告

📚 知识储备

  • 字典操作:完成项目一和项目三
  • 列表遍历:熟练使用for循环
  • 业务概念:了解"主表"和"从表"的关系

🔑 核心知识点

1. 字典映射实现JOIN

将主表存为字典(以关联键为key),遍历从表时通过key查找匹配记录。这等价于SQL中的LEFT JOIN,是Python中最常用的关联方式。

2. try-except异常处理

try: ... except KeyError: ... 当字典中不存在某个key时,程序不会崩溃,而是执行except中的处理逻辑。这在数据清洗中非常实用。

3. 数据一致性检查

关联分析的核心价值之一是发现"孤儿数据"——从表中有记录但主表中找不到对应信息。这些往往是数据质量问题的重要线索。

💻 项目实战

完整代码 — 多表关联分析

📊 运行结果

========== 多表关联分析报告 ========== --- 数据概览 --- 用户表记录数:4 条 订单表记录数:8 条 --- 关联结果(LEFT JOIN)--- O001 | 张三(北京)| 299 元 | 关联成功 O002 | 李四(上海)| 159 元 | 关联成功 O003 | ***未找到用户*** | 499 元 | 关联失败 O004 | 王五(广州)| 89 元 | 关联成功 O005 | ***未找到用户*** | 299 元 | 关联失败 O006 | 张三(北京)| 199 元 | 关联成功 O007 | 赵六(深圳)| 599 元 | 关联成功 O008 | ***未找到用户*** | 149 元 | 关联失败 --- 数据质量问题 --- 孤儿订单数:3 笔(占比 37.5%) 涉及用户ID:U005, U006, U007 涉及金额合计:947 元 --- 城市消费统计 --- 北京: 498 元(2笔) 上海: 159 元(1笔) 广州: 89 元(1笔) 深圳: 599 元(1笔)

🏆 进阶挑战

挑战1:内连接实现

修改代码实现INNER JOIN(只保留关联成功的记录),并对比LEFT JOIN的结果差异。

挑战2:多表聚合

在关联基础上,按城市统计订单总额和平均客单价,找出消费力最强的城市。

挑战3:反向检查

检查用户表中是否有"从未下单的用户"(在订单表中找不到记录),这类用户可能需要激活。

📖 拓展资源

RFM用户价值模型

学习datetime日期处理、排序和字典聚合,实现经典的RFM用户价值分层模型,是用户运营的核心分析框架。

datetime · 排序 · 字典聚合 分位数划分 · RFM三维分层 难度:中高级

🎯 学习目标

  • 掌握datetime模块的日期计算方法
  • 学会使用timedelta进行日期加减
  • 理解RFM模型的三个维度含义
  • 掌握分位数划分的实现方法
  • 能够将用户分为8个RFM价值层级

📚 知识储备

  • Python基础:完成前7个项目
  • 字典聚合:掌握项目四的分组方法
  • 业务概念:了解"用户生命周期价值"的概念

🔑 核心知识点

1. datetime日期处理

datetime(2024,12,31) - timedelta(days=30) 可以计算30天前的日期。在RFM模型中,R(Recency)需要计算最近一次消费距今的天数。

2. RFM模型

Recency(最近消费时间):越小越好。Frequency(消费频率):越大越好。Monetary(消费金额):越大越好。三个维度各分高低,组合成8个用户群体。

3. 分位数划分

将数据排序后按位置分为高低两组。中位数是最简单的二分位方式。高于中位数的标记为"高",低于的标记为"低"。

💻 项目实战

完整代码 — RFM用户价值模型

📊 运行结果

========== RFM 用户价值分析报告 ========== 分析基准日期:2024-12-31 用户总数:10 人 --- RFM 原始数据 --- 用户A | R: 最近消费距今XX天 | F: X次 | M: XXXX元 用户B | R: 最近消费距今XX天 | F: X次 | M: XXXX元 ... --- RFM 分层结果 --- 重要价值客户(R高F高M高):X 人 重要发展客户(R高F低M高):X 人 重要保持客户(R低F高M高):X 人 重要挽留客户(R低F低M高):X 人 一般价值客户(R高F高M低):X 人 一般发展客户(R高F低M低):X 人 一般保持客户(R低F高M低):X 人 流失客户(R低F低M低):X 人 --- 运营建议 --- 重要价值客户:VIP服务,专属权益 流失客户:召回活动,优惠券刺激

🏆 进阶挑战

挑战1:RFM评分制

将每个维度按分位数分为1-5分(而非简单的高低),计算RFM总分,实现更精细的用户分层。

挑战2:动态阈值

使用四分位数(Q1、Q2、Q3)将每个维度分为"低、中、高"三档,实现27个更细粒度的用户群体。

挑战3:趋势分析

将时间分为两个半年,分别计算RFM,观察用户在不同维度的变化趋势(上升/稳定/下降)。

📖 拓展资源

A/B测试快速分析

学习随机抽样、条件聚合和函数封装,实现A/B测试的转化率对比和效果评估,是产品决策的核心分析方法。

随机抽样 · 条件聚合 · 函数封装 转化率对比 · 置信区间 难度:中高级

🎯 学习目标

  • 理解A/B测试的基本原理和应用场景
  • 学会使用random模块生成模拟数据
  • 掌握转化率的计算和对比方法
  • 理解置信区间的基本概念和计算
  • 能够做出"是否拒绝原假设"的判断

📚 知识储备

  • Python基础:完成前8个项目
  • 统计概念:了解概率、均值的基本概念
  • 业务概念:了解"转化率"、"对照组/实验组"的含义

🔑 核心知识点

1. A/B测试原理

将用户随机分为两组:对照组(A组)使用原有方案,实验组(B组)使用新方案。通过对比两组的关键指标(如转化率),判断新方案是否显著优于原方案。

2. 转化率计算

转化率 = 转化人数 / 总人数。在代码中,sum(group) / len(group) 即可计算(1代表转化,0代表未转化)。

3. 置信区间

95%置信区间 = 转化率 +/- 1.96 * 标准误差。如果两组的置信区间不重叠,说明差异显著。标准误差 = sqrt(p*(1-p)/n)。

💻 项目实战

完整代码 — A/B测试快速分析

📊 运行结果

========== A/B 测试分析报告 ========== --- 实验设计 --- 对照组样本量:1000 实验组样本量:1000 --- 转化率对比 --- 对照组转化率:12.0%(120/1000) 实验组转化率:16.0%(160/1000) 绝对提升:+4.0% 相对提升:+33.3% --- 置信区间(95%)--- 对照组: [10.0%, 14.0%] 实验组: [13.7%, 18.3%] --- 结论 --- 实验组转化率显著高于对照组(置信区间不重叠) 建议:上线新方案

🏆 进阶挑战

挑战1:多指标分析

除了点击转化率,同时分析"注册转化率"和"付费转化率"两个指标,综合评估实验效果。

挑战2:样本量计算

编写函数,输入基准转化率、最小可检测效应和显著性水平,计算所需的样本量。

挑战3:分层分析

将用户按"新用户/老用户"分层,分别计算各层的转化率,检查实验效果是否在不同用户群体间一致。

📖 拓展资源

销售预测数据流水线

综合运用函数模块化、特征工程和简单线性回归,构建完整的"清洗-特征-训练-预测"数据流水线。

函数模块化 · 特征工程 · assert断言 滞后特征 · 线性回归入门 难度:高级

🎯 学习目标

  • 掌握函数模块化编程的最佳实践
  • 理解滞后特征(lag feature)的构造方法
  • 学会使用assert进行数据验证
  • 了解简单线性回归的原理和实现
  • 能够构建完整的数据处理流水线

📚 知识储备

  • 全部前9个项目:需要综合运用所学知识
  • NumPy操作:掌握数组运算和统计函数
  • 函数定义:熟练使用def定义和调用函数

🔑 核心知识点

1. 数据流水线思想

将数据处理分为多个步骤:数据加载 -> 清洗 -> 特征工程 -> 模型训练 -> 预测 -> 评估。每个步骤封装为独立函数,便于调试和维护。

2. 滞后特征

将前一天的销售额作为今天的特征(lag_1),前两天的作为lag_2。这样模型就可以利用历史数据预测未来,是时间序列预测的基础特征。

3. 简单线性回归

找到一条直线 y = ax + b,使预测值与真实值的误差最小。这里用最小二乘法实现,a = 协方差/方差,b = 均值_y - a*均值_x。

💻 项目实战

完整代码 — 销售预测数据流水线

📊 运行结果

========== 销售预测数据流水线 ========== --- 第1步:数据加载 --- 原始数据:100 天 数据范围: 500.00 ~ XXXX.XX --- 第2步:数据清洗 --- 缺失值:0 异常值:0 清洗后数据量:100 --- 第3步:特征工程 --- 构造特征:lag_1, lag_2, lag_3, rolling_mean_3, rolling_std_3 特征矩阵形状:(97, 5) --- 第4步:模型训练 --- 使用 lag_1 作为特征进行简单线性回归 斜率(a): 0.98 截距(b): XX.XX R²得分: 0.XX --- 第5步:预测结果 --- 最近5天预测 vs 实际: 第96天: 预测 XXXX | 实际 XXXX | 误差 XX 第97天: 预测 XXXX | 实际 XXXX | 误差 XX 平均绝对误差(MAE): XX.XX 平均绝对百分比误差(MAPE): X.XX%

🏆 进阶挑战

挑战1:多特征回归

使用lag_1、lag_2、lag_3三个特征进行多元线性回归,对比单特征模型的预测精度提升。

挑战2:训练集/测试集划分

将数据按时间划分为训练集(前80%)和测试集(后20%),在测试集上评估模型表现,避免"过拟合"。

挑战3:完整流水线封装

将所有步骤封装为一个类(class),包含fit()、predict()、evaluate()方法,实现可复用的预测流水线。

📖 拓展资源