Scikit-learn玩得很熟了?這些功能你都知道嗎?
來自專欄數據汪85 人贊了文章
大數據文摘作品
編譯:汪小七、笪潔瓊、Aileen
分享一些Scikit-learn程序包里鮮有人知的遺珠功能。
Scikit-learn是Python所有的機器學習程序包中,你必須掌握的最重要的一個包,它包含各種分類演算法,回歸演算法和聚類演算法,其中包括支持向量機、隨機森林、梯度提升、k均值和基於密度的聚類演算法(DBSCAN),且旨在與Python數值庫NumPy和科學庫SciPy進行相互配合。
它通過一個介面,提供了一系列的有監督和無監督演算法。此庫希望在生產中使用時,能具有很好的穩健性和支撐性,所以它的著重點在易用性,代碼質量,協同工作,文檔生成和性能等問題上。
不管是對機器學習的初學者還是經驗豐富的專業人士來說,Scikit-learn庫都是應該熟練掌握的優秀軟體包。然而,即使是有經驗的機器學習從業者可能也沒有意識到這個包中所隱藏的一些特性,這些特性可以輕鬆地幫助他們完成任務。接下來本文將列舉幾個scikit-learn庫中鮮為人知的方法或介面。
管道(Pipeline)
這可以用來將多個估計量鏈化合一。因為在處理數據時,通常有著一系列固定的步驟,比如特徵選擇、歸一化和分類,此時這個方法將非常有用。
更多信息:
http://scikit-learn.org/stable/modules/pipeline.html
網格搜索(Grid-search)
超參數在參數估計中是不直接學習的,在scikit-learn庫中,超參數會作為參數傳遞給估計類的構造函數,然後在超參數空間中搜索最佳的交叉驗證分數在構建參數估計量時提供的任何參數都是可以用這種方式進行優化的。
更多信息:
http://scikit-learn.org/stable/modules/grid_search.html#grid-search
驗證曲線(Validation curves)
每種估計方法都有其優缺點,它的泛化誤差可以用偏差、方差和噪音來分解。估計量的偏差就是不同訓練集的平均誤差;估計量的方差是表示對不同訓練集的敏感程度;雜訊是數據本身的一個屬性。
繪製單個超參數對訓練分數和驗證分數的影響是非常有用的,因為從圖中可以看出估計量對於某些超參數值是過擬合還是欠擬合。在Scikit-learn庫中,有一個內置方法是可以實現以上過程的。
更多信息:
http://scikit-learn.org/stable/modules/learning_curve.html
分類數據的獨熱編碼(One-hot encoding of categorical data)
這是一種非常常見的數據預處理步驟,在分類或預測任務中(如混合了數量型和文本型特徵的邏輯回歸),常用於對多分類變數進行二分類編碼。Scikit-learn庫提供了有效而簡單的方法來實現這一點。它可以直接在Pandas數據框或Numpy數組上運行,因此用戶就可以為這些數據轉換編寫一些特殊的映射函數或應用函數。
Scikit-learn庫更多信息:
http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features
多項式特徵生成(Polynomial feature generation)
對於無數的回歸建模任務來說,一種常用的增加模型複雜程度的有效方法是增加解釋變數的非線性特徵。一種簡單而常用的方法就是多項式特徵,因為它可以得到特徵的高階項和交叉項。而Scikit-learn庫中有現成的函數,它可根據給定的特徵集和用戶選擇的最高多項式生成更高階的交叉項。
更多信息:
http://scikit-learn.org/stable/modules/preprocessing.html#generating-polynomial-features
數據集生成器(Dataset generators)
Scikit-learn庫包含各種隨機樣本生成器,可以根據不同大小和複雜程度來構建人工數據集,且具有分類、聚類、回歸、矩陣分解和流形測試的功能。
更多信息:
http://scikit-learn.org/stable/datasets/index.html#sample-generators
相關報道:
https://heartbeat.fritz.ai/some-essential-hacks-and-tricks-for-machine-learning-with-python-5478bc6593f2
推薦閱讀:
※優化演算法—粒子群演算法(PSO)
※Hinton神經網路課第二講筆記:感知機
※DeepMind論文解讀:讓機器更深入地理解文本
※跳槽季·機器學習面試不完全指南
TAG:深度學習DeepLearning | 機器學習 | 數據挖掘 |