Scikit-learn玩得很熟了?這些功能你都知道嗎?
大數(shù)據(jù)文摘作品
編譯:汪小七、笪潔瓊、Aileen
分享一些Scikit-learn程序包里鮮有人知的遺珠功能。
Scikit-learn是Python所有的機器學(xué)習(xí)程序包中,你必須掌握的最重要的一個包,它包含各種分類算法,回歸算法和聚類算法,其中包括支持向量機、隨機森林、梯度提升、k均值和基于密度的聚類算法(DBSCAN),且旨在與Python數(shù)值庫NumPy和科學(xué)庫SciPy進行相互配合。
它通過一個接口,提供了一系列的有監(jiān)督和無監(jiān)督算法。此庫希望在生產(chǎn)中使用時,能具有很好的穩(wěn)健性和支撐性,所以它的著重點在易用性,代碼質(zhì)量,協(xié)同工作,文檔生成和性能等問題上。
不管是對機器學(xué)習(xí)的初學(xué)者還是經(jīng)驗豐富的專業(yè)人士來說,Scikit-learn庫都是應(yīng)該熟練掌握的優(yōu)秀軟件包。然而,即使是有經(jīng)驗的機器學(xué)習(xí)從業(yè)者可能也沒有意識到這個包中所隱藏的一些特性,這些特性可以輕松地幫助他們完成任務(wù)。接下來本文將列舉幾個scikit-learn庫中鮮為人知的方法或接口。
管道(Pipeline)
這可以用來將多個估計量鏈化合一。因為在處理數(shù)據(jù)時,通常有著一系列固定的步驟,比如特征選擇、歸一化和分類,此時這個方法將非常有用。
更多信息:
http://scikit-learn.org/stable/modules/pipeline.html
網(wǎng)格搜索(Grid-search)
超參數(shù)在參數(shù)估計中是不直接學(xué)習(xí)的,在scikit-learn庫中,超參數(shù)會作為參數(shù)傳遞給估計類的構(gòu)造函數(shù),然后在超參數(shù)空間中搜索最佳的交叉驗證分數(shù)在構(gòu)建參數(shù)估計量時提供的任何參數(shù)都是可以用這種方式進行優(yōu)化的。
更多信息:
http://scikit-learn.org/stable/modules/grid_search.html#grid-search
驗證曲線(Validation curves)
每種估計方法都有其優(yōu)缺點,它的泛化誤差可以用偏差、方差和噪音來分解。估計量的偏差就是不同訓(xùn)練集的平均誤差;估計量的方差是表示對不同訓(xùn)練集的敏感程度;噪聲是數(shù)據(jù)本身的一個屬性。
繪制單個超參數(shù)對訓(xùn)練分數(shù)和驗證分數(shù)的影響是非常有用的,因為從圖中可以看出估計量對于某些超參數(shù)值是過擬合還是欠擬合。在Scikit-learn庫中,有一個內(nèi)置方法是可以實現(xiàn)以上過程的。
更多信息:
http://scikit-learn.org/stable/modules/learning_curve.html
分類數(shù)據(jù)的獨熱編碼(One-hot encoding of categorical data)
這是一種非常常見的數(shù)據(jù)預(yù)處理步驟,在分類或預(yù)測任務(wù)中(如混合了數(shù)量型和文本型特征的邏輯回歸),常用于對多分類變量進行二分類編碼。Scikit-learn庫提供了有效而簡單的方法來實現(xiàn)這一點。它可以直接在Pandas數(shù)據(jù)框或Numpy數(shù)組上運行,因此用戶就可以為這些數(shù)據(jù)轉(zhuǎn)換編寫一些特殊的映射函數(shù)或應(yīng)用函數(shù)。
Scikit-learn庫更多信息:
http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features
多項式特征生成(Polynomial feature generation)
對于無數(shù)的回歸建模任務(wù)來說,一種常用的增加模型復(fù)雜程度的有效方法是增加解釋變量的非線性特征。一種簡單而常用的方法就是多項式特征,因為它可以得到特征的高階項和交叉項。而Scikit-learn庫中有現(xiàn)成的函數(shù),它可根據(jù)給定的特征集和用戶選擇的最高多項式生成更高階的交叉項。
更多信息:
http://scikit-learn.org/stable/modules/preprocessing.html#generating-polynomial-features
數(shù)據(jù)集生成器(Dataset generators)
Scikit-learn庫包含各種隨機樣本生成器,可以根據(jù)不同大小和復(fù)雜程度來構(gòu)建人工數(shù)據(jù)集,且具有分類、聚類、回歸、矩陣分解和流形測試的功能。
更多信息:http://scikit-learn.org/stable/datasets/index.html#sample-generators
相關(guān)報道:
https://heartbeat.fritz.ai/some-essential-hacks-and-tricks-for-machine-learning-with-python-5478bc6593f2
【本文是51CTO專欄機構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】