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

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

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

相关推荐
九亿AI算法优化工作室&29 分钟前
GWO优化LSBooST回归预测matlab
人工智能·python·算法·机器学习·matlab·数据挖掘·回归
灰灰老师34 分钟前
数据分析系列--⑦RapidMiner模型评价(基于泰坦尼克号案例含数据集)
机器学习·ai·数据挖掘·数据分析·rapidminer
东锋1.31 小时前
Ollama 安装教程:轻松开启本地大语言模型之旅
人工智能
一只昀1 小时前
【产品经理学习案例——AI翻译棒出海业务】
人工智能·ai·产品经理
蓝染k9z2 小时前
在Ubuntu上使用Docker部署DeepSeek
linux·人工智能·ubuntu·docker·deepseek+
python算法(魔法师版)2 小时前
基于机器学习鉴别中药材的方法
深度学习·线性代数·算法·机器学习·支持向量机·数据挖掘·动态规划
小李学AI3 小时前
基于YOLO11的遥感影像山体滑坡检测系统
人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉·yolo11
笨小古3 小时前
保姆级教程:利用Ollama与Open-WebUI本地部署 DeedSeek-R1大模型
人工智能·deepseek
AI浩3 小时前
【Block总结】CPCA,通道优先卷积注意力|即插即用
人工智能·深度学习·目标检测·计算机视觉
HaiLang_IT3 小时前
毕业设计:基于卷积神经网络的鲜花花卉种类检测算法研究
目标检测·机器学习·毕业设计