Python大規模機器學習》—1.1.3使用Python進行向上擴展">《Python大規模機器學習》—1.1.3使用Python進行向上擴展
616
2025-04-01
2.4.5使用SGD
作為本章結論,我們將實現兩個示例:一個為基于森林覆蓋數據的分類,另一個為基于共享單車數據集的回歸。我們將看到如何將先前關于響應和特征分布的見解付諸實踐,以及如何針對每個問題使用最佳的驗證策略。
從分類問題入手,有兩個值得注意的方面需要考慮。作為一個多類問題,首先我們注意到數據庫存在某種排序,并且類沿著實例流分布。作為第一步,我們將使用在2.2.5節中定義的ram_shuffle函數來重新排列數據:
由于在沒有太多磁盤使用量的情況下將數據行壓縮到內存中并對其打亂,因此能快速獲得新的工作文件。以下代碼將以邏輯損失(等效于邏輯回歸)訓練SGDClassifier,以便其利用我們在之前對數據集中存在類的知識。forest_type列表包含類的所有代碼,并且每次(盡管只有一個或第一個就足夠了)將其傳遞給SGD學習器的partial_fit方法。
為了進行驗證,我們定義了一個基于200 000個觀察實例的冷啟動。每十個中就有一個不被訓練而用于驗證。即使我們要多次傳遞數據,此模式也允許重現性;每次傳遞時,相同實例排除在樣本外,以便測試并允許創建驗證曲線。這樣能驗證多次測試對相同數據的影響。
保持模式也伴隨著一個漸進式驗證,因此冷啟動后的每個病例在訓練前都要進行評估。盡管漸進式驗證能提供感興趣的反饋,但這種方法僅適用于第一次通過;實際上,初始傳遞后,所有觀察(但在保持模式中的觀察)都將成為樣本實例。本示例中只進行一次傳遞。
作為提醒,數據集有581 012個實例,使用SGD進行流處理和建模可能時間有點長(對于單臺計算機來說這是一個相當大的問題)。雖然我們設置了限制器來觀察250 000個實例,但你的計算機將運行大約15~20分鐘才能獲得結果:
在第二個示例中,我們將根據一系列天氣和時間信息來預測華盛頓的共享自行車數量。考慮到數據集的歷史順序,我們不對其打亂,而是把這個問題當作一個時間序列來處理。我們的驗證策略是在已經看到一定數量的示例后測試結果,以便從那個時刻向前復制要預測的不確定性。
有趣的是,有些特征已分類,因此我們使用Scikit-learn中的FeatureHasher類來表示擁有字典中記錄的類別,作為由變量名和類別代碼組成的聯合字符串。字典中為每個這樣的鍵的分配的值都呈唯一的,以便類似于哈希技巧這類方法將創建的稀疏向量中的二進制變量:
TensorFlow python 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。