ML中的数据预处理

  1. 如何快速读取大量小文件?
    做一个比赛时,有上万个很小的CSV文件,想要把他们合并起来,发现依次读取非常慢。能想到的思路是多线程读取。python多线程不熟,我直接写了几个python脚本处理读取不同的数据,然后同时运行,然后把每个脚本合并的结果再进一步合并,得到最终的文件。

  2. 如何快速读写训练集?
    第一次读入训练集后,通过降低不必要的数据精度来减少空间占用。同时要保存为pickle文件,pickle读写比csv快非常多。
    降低数据精度会,保存为csv文件是无效的,文件大小不变。

  3. 训练集和数据集某特征差异较大如何处理?
    比如某特征在训练集中有两种取值,为0或1,但是在测试集中取值为0, 1, 2, 那么可以舍弃掉这个特征。或者用K-S检验来做特征选择。
    **对原始数据首先删除静态列和重复列。**静态列指的是常数。

  4. 原始数据(必须)要做 Normalization! 原始数据是否要Normalization根据模型而定。
    概率模型如决策树、朴素贝叶斯不需要归一化,最优化问题如LR,NN一般需要归一化。
    在进行数据分析的时候,什么情况下需要对数据进行标准化处理? 见Maigo大佬的回答。
    神经网络如果不做Normalization 会出现什么后果?今天遇到一种情况,原始数据范围大概是(5000,10000),神经网络第一层是卷积,激活函数是sigmoid。直接将原始数据作为神经网络的输入,最后发现对不同样本,神经网络的输出竟然都是相同的。。。训练时loss自然也不下降。原因自然是sigmoid函数的输入太大了,输出值接近1,对任何样本这一层的输出直接变成常数了,模型的输出自然也都相同。
    在这里插入图片描述

    Normalization指将数据范围变为[0,1],有时是[-1,1],中文翻译成归一化,有的也叫标准化,我觉得归一化比较贴切,标准化一般会想到标准正态分布。深度学习里还有一种batch normalization,这里的normalization指的是将把每层的输入转化为标准正态分布,这样能够加速训练。

  5. 较大的CSV如何快速传输?
    先压缩再传输,CSV文件一般压缩率比较小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值