📅  最后修改于: 2023-12-03 14:49:31.584000             🧑  作者: Mango
在实际的数据处理中,我们有时需要随机划分给定的数据集。Python的pandas库提供了一种方便的方法,即使用sample
函数从给定的DataFrame中随机抽取指定比例的行进行划分。
以下是实现此操作的代码片段:
import pandas as pd
# 读取数据集
data = pd.read_csv('data.csv')
# 随机划分比例
train_ratio = 0.8
val_ratio = 0.1
test_ratio = 0.1
# 随机抽取行
train_data = data.sample(frac=train_ratio, random_state=42)
val_test_data = data.drop(train_data.index)
val_data = val_test_data.sample(frac=val_ratio/(val_ratio+test_ratio), random_state=42)
test_data = val_test_data.drop(val_data.index)
# 输出划分后的数据集大小
print(f'Train data: {len(train_data)}')
print(f'Validation data: {len(val_data)}')
print(f'Test data: {len(test_data)}')
以上代码将给定的数据集随机划分为训练集、验证集和测试集,并输出它们的大小。
代码说明:
使用pandas的read_csv
函数读取CSV数据集,并将其存储在名为data
的DataFrame中。
指定划分比例,这里的例子中,训练集的比例为0.8,验证集和测试集各自占总数据集的0.1。
使用sample
函数从data
中随机抽取一定比例的行,形成训练集。
根据上一步得到的训练集,使用drop
函数删除训练集中的行,形成验证集和测试集。
在验证集和测试集中,使用sample
函数从原始数据中随机抽取指定比例的行。
使用drop
函数删除验证集中的行,即可得到测试集。
输出训练集、验证集和测试集的大小。
使用以上代码,您可以方便地将给定的数据集随机划分,以进行机器学习模型的训练和测试,同时可以保证训练集、验证集和测试集的比例符合您的要求。