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

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

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

相关推荐
迎仔1 小时前
06-AI开发进阶
人工智能
陈天伟教授1 小时前
人工智能应用- 语言处理:01.机器翻译:人类语言的特点
人工智能·自然语言处理·机器翻译
Codebee1 小时前
OoderAgent 相比主流Agent框架的五大核心独特优势
人工智能
home_4981 小时前
与gemini关于神的对话
人工智能·科幻·神学
代码改善世界1 小时前
CANN深度解构:中国AI系统软件的原创性突破与架构创新
大数据·人工智能·架构
Fairy要carry1 小时前
面试-Torch函数
人工智能
啵啵鱼爱吃小猫咪1 小时前
机械臂能量分析
线性代数·机器学习·概率论
aiguangyuan1 小时前
基于BERT的中文命名实体识别实战解析
人工智能·python·nlp
量子-Alex1 小时前
【大模型RLHF】Training language models to follow instructions with human feedback
人工智能·语言模型·自然语言处理
晚霞的不甘1 小时前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频