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

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

训练阶段(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 的购物。这可能是过拟合的迹象。

相关推荐
XUA9 小时前
如何在服务器上使用Codex
人工智能
咚咚王者9 小时前
人工智能之数据分析 Matplotlib:第三章 基本属性
人工智能·数据分析·matplotlib
Mintopia9 小时前
开源AIGC模型对Web技术生态的影响与机遇 🌐✨
人工智能·aigc·敏捷开发
codetown9 小时前
openai-go通过SOCKS5代理调用外网大模型
人工智能·后端
世优科技虚拟人9 小时前
2026数字展厅设计核心关键,AI数字人交互大屏加速智慧展厅升级改造
人工智能·大模型·数字人·智慧展厅·展厅设计
m0_372257029 小时前
ID3 算法为什么可以用来优化决策树
算法·决策树·机器学习
艾莉丝努力练剑10 小时前
【Python基础:语法第一课】Python 基础语法详解:变量、类型、动态特性与运算符实战,构建完整的编程基础认知体系
大数据·人工智能·爬虫·python·pycharm·编辑器
MobotStone10 小时前
数字沟通之道
人工智能·算法
Together_CZ10 小时前
Cambrian-S: Towards Spatial Supersensing in Video——迈向视频中的空间超感知
人工智能·机器学习·音视频·spatial·cambrian-s·迈向视频中的空间超感知·supersensing
caiyueloveclamp11 小时前
【功能介绍05】ChatPPT好不好用?如何用?用户操作手册来啦!——【AI辅写+分享篇】
人工智能·powerpoint·ai生成ppt·aippt·免费aippt