最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

機器學(xué)習(xí)|sklearn庫主要模塊功能和輔助函數(shù)

2021-07-21 11:53 作者:深度之眼官方賬號  | 我要投稿

本文轉(zhuǎn)自小數(shù)志微信公眾號|作者:luanhz


作為一名數(shù)據(jù)分析師,當(dāng)我初次接觸數(shù)據(jù)分析三劍客(numpy、pandas、matplotlib)時,感覺每個庫的功能都很多很雜,也費了一番功夫琢磨并出了教程。


后來,當(dāng)接觸了機器學(xué)習(xí)庫sklearn之后,才發(fā)現(xiàn)三劍客也不外如是,相比sklearn簡直是小巫見大巫;再后來,又開始了pyspark的學(xué)習(xí)之旅,發(fā)現(xiàn)無論是模塊體積還是功能細分,pyspark又都完爆sklearn;最近,逐漸入坑深度學(xué)習(xí)(TensorFlow框架),終于意識到python數(shù)據(jù)科學(xué)庫沒有最大,只有更大……


鑒于機器學(xué)習(xí)本身理論性很強,加之sklearn庫功能強大API眾多,自然不是總結(jié)一份教程所能涵蓋的。所以這一次,僅對其中的各子模塊進行梳理和介紹,以期通過本文能對sklearn迅速建立宏觀框架。


01 sklearn簡介


sklearn,全稱scikit-learn,是python中的機器學(xué)習(xí)庫,建立在numpy、scipy、matplotlib等數(shù)據(jù)科學(xué)包的基礎(chǔ)之上,涵蓋了機器學(xué)習(xí)中的樣例數(shù)據(jù)、數(shù)據(jù)預(yù)處理、模型驗證、特征選擇、分類、回歸、聚類、降維等幾乎所有環(huán)節(jié),功能十分強大,目前sklearn版本是0.23。


與深度學(xué)習(xí)庫存在pytorch、TensorFlow等多種框架可選不同,sklearn是python中傳統(tǒng)機器學(xué)習(xí)的首選庫,不存在其他競爭者。


本文將分別圍繞下圖中各大子模塊進行分別介紹,不會面面俱到、但求提綱挈領(lǐng)。



sklearn常用模塊一覽

02 樣例數(shù)據(jù)集


sklearn為初學(xué)者提供了一些經(jīng)典數(shù)據(jù)集,通過這些數(shù)據(jù)集可快速搭建機器學(xué)習(xí)任務(wù)、對比模型性能。數(shù)據(jù)集主要圍繞分類和回歸兩類經(jīng)典任務(wù),對于不同需求,常用數(shù)據(jù)集簡介如下:


load_breast_cancer:乳腺癌數(shù)據(jù)集,特征為連續(xù)數(shù)值變量,標簽為0或1的二分類任務(wù)


load_iris:經(jīng)典鳶尾花數(shù)據(jù)集,特征為連續(xù)數(shù)值變量,標簽為0/1/2的三分類任務(wù),且各類樣本數(shù)量均衡,均為50個


load_wine:紅酒數(shù)據(jù)集,與鳶尾花數(shù)據(jù)集特點類似,也是用于連續(xù)特征的3分類任務(wù),不同之處在于各類樣本數(shù)量輕微不均衡


load_digits:小型手寫數(shù)字數(shù)據(jù)集(之所以稱為小型,是因為還有大型的手寫數(shù)字數(shù)據(jù)集mnist),包含0-9共10種標簽,各類樣本均衡,與前面3個數(shù)據(jù)集最大不同在于特征也是離散數(shù)值0—16之間,例如在進行多項式樸素貝葉斯模型、ID3樹模型時,可用該數(shù)據(jù)集


load_boston:波士頓房價數(shù)據(jù)集,連續(xù)特征擬合房價,適用于回歸任務(wù)


值得指出,sklearn除了load系列經(jīng)典數(shù)據(jù)集外,還支持自定義數(shù)據(jù)集make系列和下載數(shù)據(jù)集fetch系列(load系列為安裝sklearn庫時自帶,而fetch則需額外下載),這為更多的學(xué)習(xí)任務(wù)場景提供了便利。


03 數(shù)據(jù)預(yù)處理


sklearn中的各模型均有規(guī)范的數(shù)據(jù)輸入輸出格式,一般以np.array和pd.dataframe為標準格式,所以一些字符串的離散標簽是不能直接用于模型訓(xùn)練的;

同時為了加快模型訓(xùn)練速度和保證訓(xùn)練精度,往往還需對數(shù)據(jù)進行預(yù)處理,例如在以距離作為度量進行訓(xùn)練時則必須考慮去量綱化的問題。


為此,sklearn提供了一些常用的數(shù)據(jù)預(yù)處理功能,常用的包括:


MinMaxScaler:歸一化去量綱處理,適用于數(shù)據(jù)有明顯的上下限,不會存在嚴重的異常值,例如考試得分0-100之間的數(shù)據(jù)可首選歸一化處理

StandardScaler:標準化去量綱處理,適用于可能存在極大或極小的異常值,此時用MinMaxScaler時,可能因單個異常點而將其他數(shù)值變換的過于集中,而用標準正態(tài)分布去量綱則可有效避免這一問題

Binarizer:二值化處理,適用于將連續(xù)變量離散化

OneHotEncoder:獨熱編碼,一種經(jīng)典的編碼方式,適用于離散標簽間不存在明確的大小相對關(guān)系時。

例如對于民族特征進行編碼時,若將其編碼為0-55的數(shù)值,則對于以距離作為度量的模型則意味著民族之間存在"大小"和"遠近"關(guān)系,而用獨熱編碼則將每個民族轉(zhuǎn)換為一個由1個"1"和55個"0"組成的向量。

弊端就是當(dāng)分類標簽過多時,容易帶來維度災(zāi)難,而特征又過于稀疏

Ordinary:數(shù)值編碼,適用于某些標簽編碼為數(shù)值后不影響模型理解和訓(xùn)練時。例如,當(dāng)民族為待分類標簽時,則可將其簡單編碼為0-55之間的數(shù)字


04 特征選擇


機器學(xué)習(xí)中有句經(jīng)典的臺詞是:

數(shù)據(jù)和特征決定學(xué)習(xí)上限,模型和算法只是逼近這個上限,可見特征工程在機器學(xué)習(xí)中的重要性。


一般而言,傳統(tǒng)機器學(xué)習(xí)中的特征工程主要包括兩方面需求:


特征維度過多時,為加快模型訓(xùn)練速度,進行特征選擇即過濾掉不重要的特征;

特征較少或模型訓(xùn)練性能不好時,可通過對問題的理解嘗試構(gòu)建特征提升維度。


這里簡單介紹幾種特征選擇的方式:


from_model:顧名思義,從模型選擇特征,這是因為很多模型在訓(xùn)練后都提供了特征的重要性結(jié)果feature_importance,據(jù)此可作為特征選擇的依據(jù)


VarianceThreshold:根據(jù)方差閾值做特征選擇,實際上當(dāng)某一特征的方差越大時意味著該特征越能帶來更好的分類區(qū)分度,否則由于特征取值比較集中,很難對應(yīng)不同的分類效果


SelectKBest:指定K個特征選擇結(jié)果,具體也需依賴選擇的標準


05 模型選擇


模型選擇是機器學(xué)習(xí)中的重要環(huán)節(jié),涉及到的操作包括數(shù)據(jù)集切分、參數(shù)調(diào)整和驗證等。對應(yīng)常用函數(shù)包括:


train_test_split:常用操作之一,切分數(shù)據(jù)集和測試集,可設(shè)置切分比例


cross_val_score:交叉驗證,默認K=5折,相當(dāng)于把數(shù)據(jù)集平均切分為5份,并逐一選擇其中一份作為測試集、其余作為訓(xùn)練集進行訓(xùn)練及評分,最后返回K個評分


GridSearchCV:調(diào)參常用方法,通過字典類型設(shè)置一組候選參數(shù),并制定度量標準,最后返回評分最高的參數(shù)


06 度量指標


不同的度量指標可以學(xué)到不同的最優(yōu)模型。對于不同類型任務(wù),sklearn提供了多種度量指標,包括:


分類任務(wù):

準確率,所有樣本中分類正確樣本所占比例;精準率和召回率,一對相互矛盾的指標,適用于分類樣本數(shù)量不均衡時,此時為了保證既定目標,可只選其中一個指標;調(diào)和平均數(shù)F1,相當(dāng)于兼顧了精準率和召回率兩項指標


回歸任務(wù):

常用的包括MSE、MAE,但R2_score實質(zhì)上是更為公允和直觀的評價指標,其意義是R2_Score = MSE / VAR,即預(yù)測分類和實際分類的均方差與實際分類方差的比值


聚類任務(wù):

聚類任務(wù)屬于無監(jiān)督學(xué)習(xí),所以根據(jù)是否有先驗標簽信息,聚類結(jié)果的度量指標包括輪廓系數(shù)(無需先驗標簽,用組內(nèi)距離與組外最近距離的比值度量)、調(diào)整蘭德指數(shù)(基于真實分簇標簽和聚類標簽計算)


07 降維


降維也屬于無監(jiān)督學(xué)習(xí)的一種,當(dāng)特征維度過多時可通過矩陣的QR分解實現(xiàn)在盡可能保留原有信息的情況下降低維度,一般用于圖像數(shù)據(jù)預(yù)處理,且降維后的特征與原特征沒有直接聯(lián)系,使得模型訓(xùn)練不再具有可解釋性。


08 聚類


聚類是一種典型的無監(jiān)督學(xué)習(xí)任務(wù),但也是實際應(yīng)用中較為常見的需求。在不提供樣本真實標簽的情況下,基于某些特征對樣本進行物以類聚。


根據(jù)聚類的原理,主要包括三種:


基于距離聚類,典型的就是K均值聚類,通過不斷迭代和重新尋找最小距離,對所有樣本劃分為K個簇,有一款小游戲《擁擠城市》應(yīng)該就是基于K均值聚類實現(xiàn)。

基于密度聚類,與距離聚類不同,基于密度聚類的思想是源于通過距離判斷樣本是否連通(需指定連通距離的閾值),從而完成樣本劃分。

由于劃分結(jié)果僅取決于連通距離的閾值,所以不可指定聚類的簇數(shù)。典型算法模型是DBSCAN。

基于層次聚類,具體又可細分為自頂向下和自底向上,以自底向上層次聚類為例:

首先將所有樣本劃分為一類,此時聚類簇數(shù)K=樣本個數(shù)N,遍歷尋找K個簇間最相近的兩個簇并完成合并,此時還有K-1個簇,如此循環(huán)直至劃分為指定的聚類簇數(shù)。


當(dāng)然,這里評價最相近的兩個簇的標準又可細分為最小距離、最大距離和平均距離。



09 基本學(xué)習(xí)模型


分類和回歸任務(wù)是機器學(xué)習(xí)中的經(jīng)典場景,同屬于有監(jiān)督學(xué)習(xí)。經(jīng)典的學(xué)習(xí)算法主要包括5種:

  • 線性模型,回歸任務(wù)中對應(yīng)線性回歸,分類任務(wù)則對應(yīng)即邏輯回歸,或者叫對數(shù)幾率回歸,實質(zhì)是通過線性回歸擬合對數(shù)幾率的方式來實現(xiàn)二分類。

  • K近鄰,最簡單易懂的機器學(xué)習(xí)模型,無需訓(xùn)練(惰性模型),僅僅是通過判斷自己所處位置周邊的樣本判斷類比或者擬合結(jié)果

  • 支持向量機,一個經(jīng)典的機器學(xué)習(xí)模型,最初也是源于線性分類,通過最大化間隔實現(xiàn)最可靠的分類邊界。

業(yè)界相傳:支持向量機有三寶、間隔對偶核函數(shù)。其中"間隔"由硬間隔升級為軟間隔解決了帶異常值的線性不可分場景,"對偶"是在優(yōu)化過程中求解拉格朗日問題的一個小技巧,而核函數(shù)才是支持向量機的核心,通過核實的核函數(shù)可以實現(xiàn)由線性可分向線性不可分的升級、同時避免了維度災(zāi)難。

  • 樸素貝葉斯,源于概率論中貝葉斯全概率公式,模型訓(xùn)練的過程就是擬合各特征分布概率的過程,而預(yù)測的過程則是標出具有最大概率的類比,是一個純粹的依據(jù)概率完成分類任務(wù)的模型。

而像邏輯回歸、K近鄰、支持向量機以及決策樹,雖然也都可以預(yù)測出各類別概率,但并不是純粹意義上的概率

  • 決策樹,這是一個直觀而又強大的機器學(xué)習(xí)模型,訓(xùn)練過程主要包括特征選擇-切分-剪枝,典型的3個決策樹是ID3、C4.5和CART,其中CART樹既可用于分類也可用于回歸。

更重要的是,決策樹不僅模型自身頗具研究價值,還是眾多集成學(xué)習(xí)模型的基學(xué)習(xí)器。

在以上5個經(jīng)典的基本學(xué)習(xí)模型中,除了樸素貝葉斯僅用于分類任務(wù)外,其他4個模型都是既可分類也可回歸的模型。


010?集成學(xué)習(xí)模型


當(dāng)基本學(xué)習(xí)模型性能難以滿足需求時,集成學(xué)習(xí)便應(yīng)運而生。集成學(xué)習(xí),顧名思義,就是將多個基學(xué)習(xí)器的結(jié)果集成起來匯聚出最終結(jié)果。


而根據(jù)匯聚的過程,集成學(xué)習(xí)主要包括3種流派:

bagging,即bootstrap aggregating,通過自助取樣(有放回取樣)實現(xiàn)并行訓(xùn)練多個差異化的基學(xué)習(xí)器,雖然每個學(xué)習(xí)器效果可能并不突出,但通過最后投票得到的最終結(jié)果性能卻會穩(wěn)步提升。

當(dāng)基學(xué)習(xí)器采取決策樹時,bagging思想的集成學(xué)習(xí)模型就是隨機森林。另外,與bagging對應(yīng)的另一種方式是無放回取樣,相應(yīng)的方法叫pasting,不過應(yīng)用較少。


boosting,即提升法:


與bagging模型并行獨立訓(xùn)練多個基學(xué)習(xí)器不同,boosting的思想是基于前面訓(xùn)練結(jié)果逐漸訓(xùn)練更好的模型,屬于串行的模式。

根據(jù)實現(xiàn)細節(jié)不同,又具體分為兩種boosting模型,分別是Adaboost和GBDT,二者的核心思想差異在于前者的提升聚焦于之前分錯的樣本、而后者的提升聚焦于之前漏學(xué)的殘差。另外一個大熱的XGBoost是對GBDT的一個改進,實質(zhì)思想是一致的。

stacking,即堆棧法,基本流程與bagging類似而又不同:


stacking也是并行獨立訓(xùn)練多個基學(xué)習(xí)器,而后又將這些訓(xùn)練的結(jié)果作為特征進行再次學(xué)習(xí)。有些類似于深度學(xué)習(xí)中的多層神經(jīng)網(wǎng)絡(luò)。




011?總結(jié)


以上,對sklearn中的常用子模塊進行了粗略簡介,基本涵蓋了常用的模型和輔助函數(shù),對于sklearn入門來說是足夠的。本文僅旨在建立對sklearn庫的宏觀框架,更為深入的學(xué)習(xí)當(dāng)然還是要查閱專項教程。


更多干貨知識可以關(guān)注學(xué)姐的微信公眾號

偶爾會把大佬們的思路給大家搬運過來



三連一下,給學(xué)姐多多支持!



機器學(xué)習(xí)|sklearn庫主要模塊功能和輔助函數(shù)的評論 (共 條)

分享到微博請遵守國家法律
许昌市| 应用必备| 曲松县| 清苑县| 金平| 栾川县| 裕民县| 虞城县| 化德县| 南漳县| 新晃| 故城县| 阿图什市| 南投市| 藁城市| 阜平县| 英德市| 昌平区| 通州区| 合肥市| 万山特区| 延长县| 南充市| 隆子县| 东海县| 九龙县| 伊春市| 杭锦旗| 措美县| 延川县| 北安市| 隆德县| 文安县| 卓尼县| 翼城县| 湖口县| 台前县| 赤峰市| 舒兰市| 如皋市| 白朗县|