今日目标
- 理解什么是特征(输入)和标签(输出)
- 学会组织训练数据
- 理解为什么需要多组数据
- 能自己准备一个小数据集
学习内容
1. 特征与标签
特征(Feature):提供给模型的信息,也就是输入。
标签(Label):模型要学习的正确答案,也就是输出。
举例:
| 场景 | 特征(x) | 标签(y) |
|---|---|---|
| 温度转换 | 摄氏温度 | 华氏温度 |
| 商品总价 | 购买数量 | 总金额 |
| 房价预测 | 房屋面积 | 房价 |
| 设备异常 | 温度/振动/电流 | 正常或异常 |
2. 组织训练数据
# 方式1:两个独立列表
特征 = [0, 1, 2, 3, 4]
标签 = [1, 3, 5, 7, 9]
# 方式2:成对列表
数据 = [
(0, 1),
(1, 3),
(2, 5),
(3, 7),
(4, 9),
]
# 遍历成对数据
for x, y in 数据:
print(f"输入={x}, 期望输出={y}")
3. 为什么需要多组数据?
如果只给一组数据,模型可能学到错误的规律。
举例:
| 数据量 | 问题 |
|---|---|
| 1组 | 无法判断是直线还是曲线 |
| 2组 | 只能确定一条直线,但不知道是否准确 |
| 5组以上 | 能看出规律的趋势,模型更可靠 |
4. 准备一个真实场景的数据集
假设我们收集了5个员工的工资数据:
# 工作年限(年) → 月薪(千元)
员工数据 = [
(1, 8), # 工作1年,月薪8千
(2, 10), # 工作2年,月薪1万
(3, 13), # 工作3年,月薪1万3
(5, 18), # 工作5年,月薪1万8
(8, 25), # 工作8年,月薪2万5
]
工作年限 = [d[0] for d in 员工数据]
月薪 = [d[1] for d in 员工数据]
print("工作年限:", 工作年限)
print("月薪:", 月薪)
5. 数据的噪声
真实世界的数据不会完美落在一条直线上。
# 理想数据(没有噪声)
理想数据 = [(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]
# 带噪声的数据(更接近真实)
带噪声数据 = [
(0, 1.1), # 期望1,实际1.1
(1, 2.8), # 期望3,实际2.8
(2, 5.3), # 期望5,实际5.3
(3, 6.9), # 期望7,实际6.9
(4, 9.2), # 期望9,实际9.2
]
# 观察噪声的影响
for x, y in 带噪声数据:
理想值 = 2 * x + 1
误差 = abs(y - 理想值)
print(f"x={x}, 实际y={y:.1f}, 理想y={理想值}, 误差={误差:.1f}")
今日练习
练习1:整理自己的数据集
选择一个你感兴趣的主题,收集5组数据:
# 示例:学习时间(小时) → 考试成绩(分)
学习数据 = [
(1, 55),
(2, 65),
(3, 72),
(4, 85),
(5, 92),
]
学习时间 = [d[0] for d in 学习数据]
考试成绩 = [d[1] for d in 学习数据]
for 时间, 成绩 in zip(学习时间, 考试成绩):
print(f"学习{时间}小时 → 成绩{成绩}分")
练习2:计算数据的统计信息
数据 = [(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]
x值 = [d[0] for d in 数据]
y值 = [d[1] for d in 数据]
# 计算x和y的平均值
x平均 = sum(x值) / len(x值)
y平均 = sum(y值) / len(y值)
print(f"x的平均值:{x平均}")
print(f"y的平均值:{y平均}")
验收标准
- 能区分特征和标签
- 能组织至少5组训练数据
- 能解释为什么需要多组数据
- 能识别数据中的噪声
明日预告
下节课将学习前向计算:如何用公式 y = wx + b 进行预测。

916

被折叠的 条评论
为什么被折叠?



