📅  最后修改于: 2023-12-03 15:38:07.630000             🧑  作者: Mango
在机器学习中,常常需要将数据集拆分成训练集和测试集。训练集用于模型的训练,测试集用于评估模型的性能。本文将介绍如何使用Python将数据集拆分成训练集和测试集。
sklearn库是Python中常用的机器学习库之一,其提供了方便的函数来拆分数据集。可以使用train_test_split
函数来将数据集拆分为训练集和测试集。
from sklearn.model_selection import train_test_split
# X为特征矩阵,y为标签矩阵
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
X
:特征矩阵,包含所有的训练样本。y
:标签矩阵,包含所有的标签。test_size
:测试集占总数据集的比例,默认值为0.25。random_state
:随机数种子,用于重复试验结果。设置随机种子可以保证随机结果的可重复性,可以设为任意非负整数。默认为None
,这意味着每次运行程序会产生不同的结果。train_test_split
函数返回四个参数:X_train
、X_test
、y_train
、y_test
,它们分别是训练集的特征矩阵、测试集的特征矩阵、训练集的标签矩阵和测试集的标签矩阵。
除了使用sklearn库提供的函数,我们还可以手动编写代码来拆分数据集。
import random
# 将列表data按比例ratio拆分成训练集和测试集
def split_data(data, ratio):
train_size = int(len(data) * ratio)
train_set = []
test_set = list(data)
while len(train_set) < train_size:
index = random.randrange(len(test_set))
train_set.append(test_set.pop(index))
return train_set, test_set
# 示例
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
train_set, test_set = split_data(data, 0.7)
print("训练集:", train_set)
print("测试集:", test_set)
data
:需要拆分的数据集,可以是列表、元组、集合等序列类型。ratio
:测试集占比,取值范围为(0,1)。split_data
函数返回两个值:train_set
、test_set
,它们分别是拆分得到的训练集和测试集。
本文介绍了两种方法来将数据集拆分为训练集和测试集,一种是使用sklearn库提供的函数,另一种是手动编写拆分代码。在实际使用中可以根据需求选择合适的方法。