测试集和训练集8:2切分

本文介绍了如何按照8:2的比例切分测试集和训练集,涉及random.shuffle()函数用于随机排序列表,以及如何将数据集转化为列表进行切分。同时还提供了解决方案,以适应自定义比例的切分需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试集和训练集8:2切分

最近接到个需求:测试集和训练集8:2切分,翻阅了很多资料封装了一个切分方法。

首先介绍下shuffle()函数

shuffle() 方法将序列的所有元素随机排序。

import randomrandom.shuffle (lst )

注意:shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。

切分对象是一个列表
def split(full_list, shuffle=False, ratio=0.2):
    n_total = len(full_list)
    offset = int(n_total * ratio)
    if n_total == 0 or offset < 1:
        return [], full_list
    if shuffle:
        random.shuffle(full_list)
    sublist_1 = full_list[:offset]
    sublist_2 = full_list[offset:]
    return sublist_1, sublist_2
    if __name__ == "__main__":
	    li = range(5)
       sublist_1,sublist_2 = split(li,shuffle=True,ratio=0.2)
 
       print sublist_1,len(sublist_1)
       print sublist_2,len(sublist_2)
### 如何按8:1:1比例划分机器学习的数据集 当处理特定应用场景时,可能需要采用不同于常规的比例划分数据集。对于希望按照8:1:1比例划分训练集、验证集以及测试集的情况,这意味着大部分数据用于模型训练,而相对较少部分分别用于验证最终性能评估。 #### Python代码示例:使用Scikit-Learn库进行数据集划分 为了实现这一目标,可以借助Python中的`scikit-learn`库提供的工具函数轻松完成此操作: ```python from sklearn.model_selection import train_test_split def split_dataset(data, labels): # 初始划分:先将全部数据划分为临时的训练集合与测试集(90% vs 10%) temp_train_data, test_data, temp_train_labels, test_labels = \ train_test_split(data, labels, test_size=0.1, random_state=42) # 再次划分:从未参与过上述过程的数据中取出一部分作为验证集(约等于原始数据总量的1/10) train_data, val_data, train_labels, val_labels = \ train_test_split(temp_train_data, temp_train_labels, test_size=1/9, random_state=42) return (train_data, train_labels), (val_data, val_labels), (test_data, test_labels) ``` 这段代码首先利用`train_test_split()`方法创建了一个初步的分割方案——即暂时性的训练集加上正式意义上的测试集;之后再次调用该方法,在之前得到的大规模“训练”集中进一步分离出一小批样本来充当验证用途[^1]。 值得注意的是,这里设置随机种子(`random_state`)是为了保证每次运行程序都能获得相同的切分结果以便于调试或重现实验环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值