📌  相关文章
📜  如何使用Python将数据集拆分为训练集和测试集(1)

📅  最后修改于: 2023-12-03 15:38:07.630000             🧑  作者: Mango

如何使用Python将数据集拆分为训练集和测试集

在机器学习中,常常需要将数据集拆分成训练集和测试集。训练集用于模型的训练,测试集用于评估模型的性能。本文将介绍如何使用Python将数据集拆分成训练集和测试集。

方法一:使用sklearn库

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_trainX_testy_trainy_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_settest_set,它们分别是拆分得到的训练集和测试集。

结语

本文介绍了两种方法来将数据集拆分为训练集和测试集,一种是使用sklearn库提供的函数,另一种是手动编写拆分代码。在实际使用中可以根据需求选择合适的方法。