在建模的时候,时常需要构造训练集和测试集,但当总数据比较大的时候,如何进行简单抽样也是一个问题。
假设有这样一个情况,一份数据总共有1,000,000条,要从中抽取100,000条左右的数据。每条数据相对比较大,把所有数据一次放入内存不靠谱,那么如何抽样呢?
最龊的方法就是抽取头100,000或100,000条。
第二种能想到的方法就是,构造一个1-1,000,000的数组,然后从里面随机抽取100,000个作为样本行号列表,在读取大文件,一旦行号在列表中就输出到样本文件中。
第二种方法基本够用,但还是存在一定缺陷。当总数据非常大,需要抽取的样本数也不小时,或机器内存较小时。于是考虑到使用概率方式,在[1-n]作均匀随机抽取数字,那么期望值(n+1)/2,也就是说随机足够多次数,那么所有的随机出来的数字的平均数为(n+1)/2。那么是否可以这样考虑,我们每随机一个值a,就把大文件中中连续的a行作为一个块,那么最后每个块的平均大小为(n+1)/2,也就是说大文件被切分成N/((n+1)/2),我们再再每一块中取一行作为样本。这样的话由于大文件的总行数N,和块数(样本大小)是已知的,那么我们就可以求出n。
还是一开始的例子,可以求出n=(N/m) * 2 - 1=(1000000/100000) * 2 - 1 = 19;
于是
ei=randint(1, 19);bi=0;
fd = open('total.txt', 'r');
ofd = open('sample.txt', 'w');
while True:
line = fd.readline();
if not line:
break;
bi += 1;
if bi != ei:
continue;
ofd.write(line);
bi = 0;
ei = randint(1, 19)
PS: 我实际测试的列子是总数据条数为35385665,尝试抽取100,000,使用上面的方法,最后抽取出100,167条记录,基本符合要求了。不过不能精确的抽取100,000也就是这个方法的弊端了。
分享到:
相关推荐
自学VB所写的一个随机抽取应用,从外部txt文件读取名单(一行一个),使用了ReDim Preserve扩展数组定义范围。姓名滚动显示,单次仅抽取一个。可以选择屏蔽重复或不屏蔽(运用临时数组储存未抽取数据,以及ReDim清空...
简单好用的多类型抽奖PPT,支持随机抽取数字、姓名等文字内容。 附有记录框,可连续抽取多次。抽奖过程有滚动动画,抽奖更加真实透明。 只需简单修改Excel文件便可轻松完成数据录入,并附有贴心的使用说明。 同时,...
根据输入的数量,在提供的主文件Excel中随机抽取数据,并根据需求导出txt或.xlsx
随机抽取工具使用Java实现,从excel文件中导入学生数据,输入要随机抽取的学生数,即可随机抽取需要的学生数
通过从各种年龄组(年轻人,中年人和老年人),种族组(白人,黑人和亚洲人)的面部图像中随机抽取B,G,R值以及从FERET数据库和PAL数据库获得的性别来收集皮肤数据集。 。学习样本总量为245057; 其中50859是皮肤...
原数据集共有1225万条左右数据,数据为淘宝APP2014年11月18日至2014年12月18日的用户行为数据,共计6列字段,列字段分别是: user_id:用户身份, item_...本数据集随机抽取了其中的100万条数据,可减少程序运行时间。
python对CSV文件进行可视化-饼图
二分类数据集,乳腺癌数据集,568条记录,30类特征,可以用分类算法如xgboost,svm等分类算法
TXT中有人员名单 随机测试文件.txt 抽查人名单-- 抽选人名单.txt 数据持久化保存 使用的是浏览器对象数据库 localStorage 功能有 读取文件,初始化数据库,设置可以不抽取的学生-设置下一轮的抽查人 开始-停止抽取 ...
项目包含教室人群头部目标检测数据集(1分类)(YOLO标注格式的txt文件),数据保存按照...为了方便查看数据,提供了可视化py文件,随机传入一张图片即可绘制边界框,并且保存在当前目录。脚本无需更改,可以直接运行!
项目包含教室人群头部目标检测数据集(1分类)(VOC标注格式的xml文件),数据保存按照...为了方便查看数据,提供了可视化py文件,随机传入一张图片即可绘制边界框,并且保存在当前目录。脚本无需更改,可以直接运行!
为压缩文件创建小索引,并将其用于快速随机抽取数据。 当需要10 GiB gzip结束时,无需等待! 请参阅《 Ubuntu 》,《以获取适用于您平台的可执行文件,以及《 (如果要编译该工具)。 此外,还提供了一个magic文件...
本人博客 sklearn决策树与随机森林 参数及规则提取 模型可视化(初体验)数据文件
WEB服务器数据
5.随机抽取80%的特征数据集保存在训练数据集中,剩余的20%保存在测试数据集中。以相同的方式拆分对象数据集。6.利用训练数据集训练kNN模型。设置k等于训练数据集大小的平方根。7.使用kNN模型预测测试数据集的目标...
//存放用户信息,也就是说这个就是数据源,信息初始化的时候从数据库中获取 QTimer *timer; //定时器,用于滚动选择 int count; //计数值,即滚动多长时间由这个数值决定,数值越大滚动抽取时间越久 int Total; ...
最近在做机器学习的文本分类,python学的不到家,导致一些小问题迟迟没解决,幸亏有...text = open('./data/123.txt',r, encoding='UTF-8').read() #从指定文件夹打开TXT文件,原文件的编码格式为UTF-8 b=re.split('\n
java从excel表中读取数据按分组随机抽取------源码 可执行文件在https://download.csdn.net/download/qq_36856047/10679680 效果展示在 https://mp.csdn.net/postedit/82792196
Python初学者:希望了解如何使用Python进行数据处理和随机抽取。 活动策划者:需要一个简单的程序来辅助进行抽奖活动。 数据分析师:对使用Python进行数据操作和自动化任务有兴趣。 使用场景及目标 抽奖活动:在促销...
在实际工作上有种需求, 就是需要从给定的数据里,随机抽取一部分。 有一种简单的方法是根据总的数据条数和要抽取的数据条数, 通过简单方法,隔几行取一个,这样也能达到随机抽取一部分的目的。 但这样,源数据是...