python - sklearn如何训练大规模数据集
问题描述
问题一:
现在我有40多万条的数据,需要对该数据使用某种机器学习分类算法建立模型,遇到的问题是因为数据过于庞大不能一次性的进行数据的读取,所以想问一下该如何处理数据?
问题二:
关于sklearn交叉验证有个疑问:假如我有10000个训练数据,由交叉验证原理可以将这一万个训练数据集使用KFold方法分成n组训练(train数据占0.7),现在搞不明白的就是我对第一组的训练集进行fit(),然后对测试集进行预测验证得到预测的准确率,但是得到预测准确率有什么用呢?会对下一次的训练有影响吗?还有就是上一次的训练模型会被用到下一次的fit()函数吗?
问题解答
回答1:我最近在学大数据的数据挖掘与分析这一块,对于问题一,我有个思路你参考一下:既然无法一次性读取,可以建立分布式数据模型,分次读取数据,确定地址datanode(可以是某个变量名),建立一个namenode(名字与该地址对应的表),然后获取数据的时候,先在namenode中确认地址(需要的是哪一个变量对应的数据),再访问该地址获取数据进行处理。由于初学,我只是提供下我个人的思路,答案不唯一,仅供参考,各路大牛不喜勿喷。
回答2:40万没多少啊,顶多几G吧......如果真的是内存小到8G也没有,那还是得看你具体场景啊,举个列子,单纯算tf-idf,一个generator,内存中只有最后的tf-idf字典。
交叉验证只是为了选取误差最小的一个,你提到的前面的影响后面,是boosting的概念。
回答3:這種問答網站最好是一個問題一個坑,必要時兩個分開的問題給連結連相關性,避免 Double-barreled question
(1) 見How to optimize for speed,你會發現有很多可以調控試驗的方式,包括(a)儘量使用簡單的演算法計巧 (b)針對現實狀況做記憶体使用及速度的側寫 (c)試著用Numpy陣列取代所有nested loops (d)必要時使用Cython Wrapper 去調更有效率的C/C++函數庫。這些只是基本原則和方向,實際上還是要看你要操作問題的瓶頸分析,是速度還是空間,把代碼最佳化後再考慮是否要用平行計算等手段
(2) 你這問題得區分 數學 和 實證 上要求的差異,希望你對 过拟合(overfitting)及 underfitting的 實證及數學意義有所掌握,這裡的問答還蠻不錯的,讀一下有幫助的。
相关文章:
1. python - 如何把152753这个字符串转变成时间格式15:27:532. python没入门,请教一个问题3. javascript - swiper轮播图使用左右布局高度不一致4. php - 想要远程推送emjio ios端怎么搞 需要怎么配合5. python - 数据无法插入到mysql表里6. mysql - 类似于之类的通知系统如何设计数据库7. 更新mysql中被别人锁定的行, 能不能快速失败直接报错, 而不是一直等待8. mysql优化 - mysql EXPLAIN之后怎么看结果进行优化 ?9. mysql - 关于时间的入库问题,大神们你们存数据库的时间是取本地的时间,还是取utc的时间?10. python - 关于beautifulsoup获取文档内容
