9 数据集处理之数据分割

在机器学习中,将数据分割成训练集和测试集是一个至关重要的步骤。这一过程有利于评估模型在新数据上的泛化能力。本节将详细介绍 Scikit-Learn 中如何进行数据分割,并结合案例进行说明。

3.3 数据分割

3.3.1 数据分割的目的

数据分割的主要目的是确保模型在未见过的数据上也能表现良好。通常,我们将数据集分为两部分:

  • 训练集:用于训练模型。
  • 测试集:用于评估模型的性能。

通过这种分割方法,我们可以防止模型记住训练数据,从而导致过拟合。

3.3.2 使用 Scikit-Learn 进行数据分割

Scikit-Learn 提供了一个非常实用的 train_test_split 函数,可以快速将数据分割为训练集和测试集。下面是 train_test_split 的基本使用方法:

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

# 假设我们有如下数据集
X = [[1], [2], [3], [4], [5]]
y = [0, 1, 0, 1, 0]

# 使用 train_test_split 函数进行数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print("训练集特征:", X_train)
print("测试集特征:", X_test)
print("训练集标签:", y_train)
print("测试集标签:", y_test)

代码解析:

  • X 表示特征数据集,y 表示标签数据集。
  • test_size=0.2 表示将 20% 的数据用作测试集,剩余的 80% 用作训练集。
  • random_state=42 保证了每次运行时数据分割的随机性一致性,以便重现结果。

3.3.3 多分类数据的分割

对于多分类数据集,train_test_split 依然适用。例如,我们使用 Iris 数据集来进行演示:

1
2
3
4
5
6
7
8
9
10
11
12
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载 Iris 数据集
iris = load_iris()
X, y = iris.data, iris.target

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

print("训练集样本数:", len(X_train))
print("测试集样本数:", len(X_test))

3.3.4 分层抽样

在某些情况下,尤其是处理不平衡分类问题时,可能需要使用分层抽样。train_test_split 中的 stratify 参数可以帮助我们保持每个类别的比例。

1
2
3
4
5
# 分层抽样
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y)

print("训练集标签分布:", np.bincount(y_train))
print("测试集标签分布:", np.bincount(y_test))

通过指定 stratify=y,我们确保训练集和测试集中每个类的样本比例保持一致。

3.3.5 注意事项

在数据分割过程中,请注意以下几点:

  • 确保数据分割的随机性和一致性,可以使用 random_state
  • 在模型评估时,测试集应保持未使用状态,避免数据泄漏。
  • 对于不平衡的数据集,可考虑使用分层抽样技术。

小结

在本节中,我们学习了如何使用 Scikit-Learn 进行数据分割,并了解了分层抽样的必要性。数据分割是机器学习工作流中一个重要的过程,它为后续模型的评估奠定了基础。在下一节中,我们将研究 特征选择,深入探讨如何选取对模型有重要影响的特征。

9 数据集处理之数据分割

https://zglg.work/scikit-learn-zero/9/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

学习下节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论