(十二)机器学习 - 训练/测试

机器学习中的"训练/测试"是指使用机器学习算法从数据中学习模式的过程,并将学到的模型用于预测或分类新数据。这个过程通常分为两个主要阶段:训练阶段和测试阶段。

训练阶段(Training Phase):

  1. 数据准备:在训练阶段,首先需要收集和准备数据。这些数据被用来训练机器学习模型。数据通常包含多个特征(也称为属性或变量)和一个目标变量(机器学习模型试图预测的变量)。

  2. 模型选择:选择一个合适的机器学习算法或模型。常见的算法包括线性回归、决策树、支持向量机、神经网络等。

  3. 训练模型:使用训练数据集来训练所选的模型。在这个阶段,模型会学习数据中的模式和关系,以便能够对目标变量做出预测。

  4. 参数调优:通过调整模型的参数(超参数)来优化模型的性能。这通常通过交叉验证等技术来完成。

测试阶段(Testing Phase):

  1. 评估模型:一旦模型被训练和优化,它需要在一个新的数据集上进行测试,这个数据集被称为测试集。测试集包含了模型之前未见过的实例。

  2. 性能度量:使用各种评估指标来衡量模型在测试集上的性能,如准确率、精确率、召回率、F1分数、均方误差等。

  3. 模型验证:测试阶段的目的是验证模型的泛化能力,即模型对新数据的预测能力。如果模型在测试集上表现良好,那么可以认为它具有较好的泛化能力。

  4. 模型部署:经过测试验证后,模型可以被部署到实际应用中,用于处理真实世界的数据。

训练/测试数据集的划分:

  • 随机划分:最常见的方法是随机地将数据集划分为训练集和测试集,例如,80%的数据用于训练,20%用于测试。

  • 分层抽样:如果数据集中的类别分布不均衡,可以使用分层抽样确保训练集和测试集中各类别的比例与原始数据集相同。

  • 时间序列数据:对于时间序列数据,通常按照时间顺序进行划分,以确保模型能够正确处理时间依赖性。

数据集

例子:

数据集展示了商店中的 100 位顾客及其购物习惯。

python 复制代码
import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

plt.scatter(x, y)
plt.show()

结果:

x 轴表示购买前的分钟数。

y 轴表示在购买上花费的金额。

拆分训练/测试

训练集应该是原始数据的 80% 的随机选择。

测试集应该是剩余的 20%。

复制代码
train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

显示训练集

显示与训练集相同的散点图:

python 复制代码
plt.scatter(train_x, train_y)
plt.show()

结果:

它看起来像原始数据集,因此似乎是一个合理的选择:

显示测试集

为了确保测试集不是完全不同,我们还要看一下测试集。

python 复制代码
plt.scatter(test_x, test_y)
plt.show()

结果:

测试集也看起来像原始数据集:

拟合数据集

数据集是什么样的?我认为最合适拟合的是多项式回归,因此让我们画一条多项式回归线。

要通过数据点画一条线,我们使用 matplotlib 模块的 plott() 方法:

实例

绘制穿过数据点的多项式回归线:

python 复制代码
import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(0, 6, 100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

结果:

此结果可以支持我们对数据集拟合多项式回归的建议,即使如果我们尝试预测数据集之外的值会给我们带来一些奇怪的结果。例如:该行表明某位顾客在商店购物 6 分钟,会完成一笔价值 200 的购物。这可能是过拟合的迹象。

相关推荐
思绪无限几秒前
YOLOv5至YOLOv12升级:常见车型识别系统的设计与实现(完整代码+界面+数据集项目)
人工智能·深度学习·yolo·目标检测·目标跟踪·yolov12·yolo全家桶
lkforce2 分钟前
MiniMind学习笔记(零)--基础概念
人工智能·算法·机器学习·token·分词器·minimind·词汇表
Ndmzi4 分钟前
每次启动claude 后powershell字体颜色就自动修改了,退出后也不会恢复原状,这是什么原因?
人工智能
Baihai_IDP5 分钟前
以 Nano-vLLM 为例,深入理解 LLM 推理引擎(Part 2)
人工智能·面试·llm
刘~浪地球6 分钟前
当AI开始“制造“:智能工厂是提升效率还是取代工人?
人工智能·制造
BFT白芙堂7 分钟前
基于 AR 阻抗可视化的 Franka Research3 机械臂遥操作设计与应用
人工智能·深度学习·机器学习·机器人·ar·franka
踩着两条虫11 分钟前
VTJ.PRO 新手入门:从环境搭建到 AI 生成首个 Vue3 应用
前端·javascript·数据库·vue.js·人工智能·低代码
2013编程爱好者12 分钟前
【AI】豆包+千问下载以及使用指南
人工智能·千问·豆包
山科智能信息处理实验室13 分钟前
(ITES 2025)教育推荐系统综述:主流技术、应用场景与未来趋势
人工智能
OneThingAI17 分钟前
网心技术 | Claude Managed Agents 让 Harness 变成服务
人工智能·claude·onethingai·网心科技