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. docker鏡像push報錯2. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””3. html5 - datatables 加載不出來數據。4. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題5. node.js - mongodb查找子對象的名稱為某個值的對象的方法6. docker 下面創建的IMAGE 他們的 ID 一樣?這個是怎么回事????7. 運行python程序時出現“應用程序發生異常”的內存錯誤?8. html5和Flash對抗是什么情況?9. 測試自動化html元素選擇器元素ID或DataAttribute [關閉]10. 前端 - @media query 使用出現的問題?

網公網安備