15 数据预处理与模型训练之训练集与测试集

在上一篇中,我们深入探讨了特征工程的重要性以及如何提取和选择合适的特征来提升模型的表现。在本篇中,我们将进一步讨论数据预处理中的关键环节——划分训练集与测试集。这一过程对于模型的训练和评估至关重要,因此我们需要认真对待。

训练集与测试集的概念

在进行机器学习模型训练时,我们通常将数据集划分为两个主要部分:

  • 训练集(Training Set):用于训练模型的数据集,模型通过这个数据集学习特征与标签之间的关系。
  • 测试集(Test Set):用于评估模型性能的数据集,通过测试集我们可以了解模型在未见数据上的表现。

划分数据集的重要性

为何要特别关注训练集与测试集的划分?主要有以下几点原因:

  1. 防止过拟合:如果模型仅在训练集上表现良好,但在测试集上表现不佳,可能是模型过拟合了训练数据。
  2. 模型泛化能力:测试集能帮助我们评估模型的泛化能力,即模型在新数据上的表现。
  3. 调优参数:在选择最佳模型参数时,测试集提供了一个客观的评价标准。

划分方法

我们通常会使用以下几种方法来划分训练集与测试集:

1. 随机划分

最常用的方法是将数据集随机划分为训练集和测试集。以下是一个简单的Python示例,使用scikit-learn库:

1
2
3
4
5
6
7
8
9
10
11
12
import pandas as pd
from sklearn.model_selection import train_test_split

# 假设我们有一个数据框df,其中包含特征和标签
df = pd.read_csv('your_dataset.csv')

# 划分特征和标签
X = df.drop('target', axis=1)
y = df['target']

# 随机划分数据,80%训练集,20%测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

2. K折交叉验证

除了简单的随机划分,我们还可以使用K折交叉验证(K-Fold Cross-Validation)来更严谨地评估模型的性能。此方法将数据集划分为K个子集(fold),每次用K-1个子集进行训练剩下的一个子集进行测试。这个过程重复K次,从而得到K个模型及其性能。

以下是K折交叉验证的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from sklearn.model_selection import KFold
from sklearn.linear_model import LogisticRegression
import numpy as np

# 假设X和y是我们的特征和标签
kf = KFold(n_splits=5) # 5折交叉验证
model = LogisticRegression()

for train_index, test_index in kf.split(X):
X_train, X_test = X.iloc[train_index], X.iloc[test_index]
y_train, y_test = y.iloc[train_index], y.iloc[test_index]

model.fit(X_train, y_train)
score = model.score(X_test, y_test) # 评估模型
print(f"模型评分: {score:.4f}")

结论

在机器学习工作流程中,划分训练集与测试集是一个不可或缺的环节。良好的划分策略不仅能帮助我们构建有效的模型,还能为下一步的模型评估和调优提供可靠的数据基础。在后续的章节中,我们将讨论模型评估与调优中的常用评估指标,这将在评估模型性能时发挥重要作用。

关注训练与测试的划分,不仅是获得良好模型表现的关键,还是保证模型泛化能力的基础。做好这一环节,将为你的深度学习之旅打下坚实的基础!接下来,让我们继续深入探讨模型评估与调优之常用评估指标。

15 数据预处理与模型训练之训练集与测试集

https://zglg.work/deep-learning-zero/15/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论