成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

大數(shù)據(jù)
簡(jiǎn)而言之,預(yù)處理是指在你將數(shù)據(jù)“喂給”算法之前進(jìn)行的一系列轉(zhuǎn)換操作。在Python中,scikit-learn庫(kù)在sklearn.preprocessing下有預(yù)裝的功能。有更多的選擇來(lái)進(jìn)行預(yù)處理,這將是我們要探索的。

本文主要關(guān)注在Python中進(jìn)行數(shù)據(jù)預(yù)處理的技術(shù)。學(xué)習(xí)算法的出眾表現(xiàn)與特定的數(shù)據(jù)類型有密切關(guān)系。而對(duì)于沒(méi)有經(jīng)過(guò)縮放或非標(biāo)準(zhǔn)化的特征,學(xué)習(xí)算法則會(huì)給出魯莽的預(yù)測(cè)。像XGBoost這樣的算法明確要求虛擬編碼數(shù)據(jù),而決策樹(shù)算法在有些情況下好像完全不關(guān)心這些!

[[179353]]

簡(jiǎn)而言之,預(yù)處理是指在你將數(shù)據(jù)“喂給”算法之前進(jìn)行的一系列轉(zhuǎn)換操作。在Python中,scikit-learn庫(kù)在sklearn.preprocessing下有預(yù)裝的功能。有更多的選擇來(lái)進(jìn)行預(yù)處理,這將是我們要探索的。

讀完本文,你將具備數(shù)據(jù)預(yù)處理的基本技能并對(duì)其有更深入的理解。為了方便起見(jiàn),我附上了進(jìn)一步學(xué)習(xí)機(jī)器學(xué)習(xí)算法的一些資源,并且為更好地掌握這些概念,設(shè)計(jì)了幾個(gè)小練習(xí)。

可用數(shù)據(jù)集

本文中,我使用了部分的貸款預(yù)測(cè)數(shù)據(jù),缺失觀測(cè)值的數(shù)據(jù)已被移除(需要數(shù)據(jù)的讀者朋友,請(qǐng)?jiān)谠u(píng)論區(qū)留下電郵地址,我們會(huì)把數(shù)據(jù)發(fā)給你——譯者注)。

備注:貸款預(yù)測(cè)問(wèn)題中,測(cè)試集數(shù)據(jù)是訓(xùn)練集的子集。

現(xiàn)在,讓我們從導(dǎo)入重要的包和數(shù)據(jù)集開(kāi)始。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

對(duì)我們的數(shù)據(jù)集進(jìn)行仔細(xì)觀察。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

特征縮放

特征縮放是用來(lái)限制變量范圍的方法,以讓它們能在相同的尺度上進(jìn)行比較。這是在連續(xù)變量上操作的。讓我們輸出數(shù)據(jù)集中所有連續(xù)變量的分布。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

理解以上圖示后,我們推斷ApplicantIncome(申請(qǐng)人收入) 和CoapplicantIncome(共同申請(qǐng)人收入) 有相似的尺度范圍(0-50000$),LoanAmount(貸款額度) 以千為單位,范圍在0 到 600$之間,而Loan_Amount_Term(貸款周期)與其它變量完全不同,因?yàn)樗膯挝皇窃路荩渌兞繂挝皇敲涝?/p>

如果我們嘗試應(yīng)用基于距離的算法,如KNN,在這些特征上,范圍***的特征會(huì)決定最終的輸出結(jié)果,那么我們將得到較低的預(yù)測(cè)精度。我們可通過(guò)特征縮放解決這個(gè)問(wèn)題。讓我們實(shí)踐一下。

資料:閱讀這篇關(guān)于KNN的文章獲得更好的理解。(https://www.analyticsvidhya.com/blog/2014/10/introduction-k-neighbours-algorithm-clustering/)

讓我們?cè)谖覀兊臄?shù)據(jù)集中試試KNN,看看它表現(xiàn)如何。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

我們得到了大約61%的正確預(yù)測(cè),這不算糟糕,但在真正實(shí)踐中,這是否足夠?我們能否將該模型部署于實(shí)際問(wèn)題中?為回答該問(wèn)題,讓我們看看在訓(xùn)練集中關(guān)于Loan_Status(貸款狀態(tài)) 的分布。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

大約有70%貸款會(huì)被批準(zhǔn),因?yàn)橛休^高的貸款批準(zhǔn)率,我們就建立一個(gè)所有貸款都通過(guò)的預(yù)測(cè)模型,繼續(xù)操作并檢測(cè)我們的預(yù)測(cè)精度。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

哇!通過(guò)猜測(cè),我們獲得63%的精度。這意味著,該模型比我們的預(yù)測(cè)模型得到更高的精度?

這可能是因?yàn)槟承┚哂休^大范圍的無(wú)關(guān)緊要的變量主導(dǎo)了目標(biāo)函數(shù)。我們可以通過(guò)縮小所有特征到同樣的范圍來(lái)消除該問(wèn)題。Sklearn提供了MinMaxScaler 工具將所有特征的范圍縮小到0-1之間,MinMaxScaler 的數(shù)學(xué)表達(dá)式如下所示:

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

讓我們?cè)谖覀兊膯?wèn)題中試試該工具。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

現(xiàn)在,我們已經(jīng)完成縮放操作,讓我們?cè)诳s放后的數(shù)據(jù)上應(yīng)用KNN并檢測(cè)其精度。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

太好了!我們的精度從61%提升到了75%。這意味在基于距離的方法中(如:KNN),一些大范圍的特征對(duì)預(yù)測(cè)結(jié)果有決定性作用。

應(yīng)當(dāng)牢記,當(dāng)使用基于距離的算法時(shí),我們必須嘗試將數(shù)據(jù)縮放,這樣較不重要的特征不會(huì)因?yàn)樽陨磔^大的范圍而主導(dǎo)目標(biāo)函數(shù)。此外,具有不同度量單位的特征也應(yīng)該進(jìn)行縮放,這樣給每個(gè)特征具有相同的初始權(quán)重,最終我們會(huì)得到更好的預(yù)測(cè)模型。

練習(xí)1

嘗試?yán)眠壿嫽貧w模型做相同的練習(xí)(參數(shù): penalty=’l2′,C=0.01), 并請(qǐng)?jiān)谠u(píng)論區(qū)留下縮放前后的精度。

特征標(biāo)準(zhǔn)化

在進(jìn)入這部分內(nèi)容前,我建議你先完成練習(xí)1。

在之前的章節(jié),我們?cè)谫J款預(yù)測(cè)數(shù)據(jù)集之上操作,并在其上擬合出一個(gè)KNN學(xué)習(xí)模型。通過(guò)縮小數(shù)據(jù),我們得到了75%的精度,這看起來(lái)十分不錯(cuò)。我在邏輯回歸模型上嘗試了同樣的練習(xí), 并得到如下結(jié)果:

縮放前:61%

縮放后:63%

縮放后的精度與我們憑猜測(cè)得到的預(yù)測(cè)精度相近,這并不是很了不起的成就。那么,這是怎么回事呢?在精度上,為什么不像用KNN一樣有令人滿意的提升?

資料:https://www.analyticsvidhya.com/blog/2015/08/comprehensive-guide-regression/獲得對(duì)邏輯回歸更好的理解。

答案在此:

在邏輯回歸中,每個(gè)特征都被分配了權(quán)重或系數(shù)(Wi)。如果某個(gè)特征有相對(duì)來(lái)說(shuō)比較大的范圍,而且其在目標(biāo)函數(shù)中無(wú)關(guān)緊要,那么邏輯回歸模型自己就會(huì)分配一個(gè)非常小的值給它的系數(shù),從而中和該特定特征的影響優(yōu)勢(shì),而基于距離的方法,如KNN,沒(méi)有這樣的內(nèi)置策略,因此需要縮放。

我們是否忘了什么?我們的邏輯模型的預(yù)測(cè)精度和猜測(cè)的幾乎接近。

現(xiàn)在,我將在此介紹一個(gè)新概念,叫作標(biāo)準(zhǔn)化。很多Sklearn中的機(jī)器學(xué)習(xí)算法都需要標(biāo)準(zhǔn)化后的數(shù)據(jù),這意味數(shù)據(jù)應(yīng)具有零均值和單位方差。

標(biāo)準(zhǔn)化(或Z-score正則化)是對(duì)特征進(jìn)行重新調(diào)整,讓數(shù)據(jù)服從基于 μ=0 和 σ=1的標(biāo)準(zhǔn)正態(tài)分布,其中μ是均值(平均值)而σ是關(guān)于均值的標(biāo)準(zhǔn)偏差。樣本的標(biāo)準(zhǔn)分?jǐn)?shù)(也稱為z-scores)按如下所示的方法計(jì)算:

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

線性模型中因子如l1,l2正則化和學(xué)習(xí)器的目標(biāo)函數(shù)中的SVM中的RBF核心假設(shè)所有的特征都集中在0周?chē)⑶矣兄嗤樞虻钠睢?/p>

有更大順序的方差的特征將在目標(biāo)函數(shù)上起決定作用,因?yàn)榍懊娴恼鹿?jié)中,有著更大范圍的特征產(chǎn)生過(guò)此情形。 正如我們?cè)诰毩?xí)1中看到的,沒(méi)進(jìn)行任何預(yù)處理的數(shù)據(jù)之上的精度是61%,讓我們標(biāo)準(zhǔn)化我們的數(shù)據(jù),在其上應(yīng)用邏輯回歸。Sklearn提供了尺度范圍用于標(biāo)準(zhǔn)化數(shù)據(jù)。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

我們?cè)俅芜_(dá)到縮放后利用KNN所能達(dá)到的我們***的精度。這意味著,當(dāng)使用l1或l2正則化估計(jì)時(shí),標(biāo)準(zhǔn)化數(shù)據(jù)幫助我們提高預(yù)測(cè)模型的精度。其它學(xué)習(xí)模型,如有歐幾里得距離測(cè)量的KNN、k-均值、SVM、感知器、神經(jīng)網(wǎng)絡(luò)、線性判別分析、主成分分析對(duì)于標(biāo)準(zhǔn)化數(shù)據(jù)可能會(huì)表現(xiàn)更好。

盡管如此,我還是建議你要理解你的數(shù)據(jù)和對(duì)其將要使用的算法類型。過(guò)一段時(shí)間后,你會(huì)有能力判斷出是否要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化操作。

備注:在縮放和標(biāo)準(zhǔn)化中二選一是個(gè)令人困惑的選擇,你必須對(duì)數(shù)據(jù)和要使用的學(xué)習(xí)模型有更深入的理解,才能做出決定。對(duì)于初學(xué)者,你可以兩種方法都嘗試下并通過(guò)交叉驗(yàn)證精度來(lái)做出選擇。

資料: https://www.analyticsvidhya.com/blog/2015/11/improve-model-performance-cross-validation-in-python-r/ 會(huì)對(duì)交叉驗(yàn)證有更好的理解。

練習(xí)2

嘗試?yán)肧VM模型做相同的練習(xí),并請(qǐng)?jiān)谠u(píng)論區(qū)留下標(biāo)準(zhǔn)化前后的精度。

資料: https://www.analyticsvidhya.com/blog/2015/10/understaing-support-vector-machine-example-code/ 會(huì)對(duì)SVM有更好的理解。

標(biāo)簽編碼

在前面的章節(jié)里,我們對(duì)連續(xù)數(shù)字特征做了預(yù)處理。但是,我們的數(shù)據(jù)集還有其它特征,如性別(Gender)、婚否(Married)、供養(yǎng)人(Dependents)、自雇與否(Self-Employed)和教育程度(Education)。所有這些類別特征的值是字符型的。例如,性別(Gender)有兩個(gè)層次,或者是男性(Male),或者是女性(Female)。讓我們把這些特征放進(jìn)我們的邏輯回歸模型中。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

我們得到一個(gè)錯(cuò)誤信息:不能把字符型轉(zhuǎn)換成浮點(diǎn)型。因此,這里真正在發(fā)生的事是像邏輯回歸和基于距離的學(xué)習(xí)模式,如KNN、SVM、基于樹(shù)的方法等等,在Sklearn中需要數(shù)字型數(shù)組。擁有字符型值的特征不能由這些學(xué)習(xí)模式來(lái)處理。

Sklearn提供了一個(gè)非常有效的工具把類別特征層級(jí)編碼成數(shù)值。LabelEncoder用0到n_classes-1之間的值對(duì)標(biāo)簽進(jìn)行編碼。

讓我們對(duì)所有的類別特征進(jìn)行編碼。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

我們所有的類別特征都已編碼。用X_train.head()可以查看更新了的數(shù)據(jù)集。我們將看下性別(Gender)在編碼前后的頻率分布。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

現(xiàn)在我們已經(jīng)完成了標(biāo)簽編碼,讓我們?cè)谕瑫r(shí)有著類別和連續(xù)特征的數(shù)據(jù)集上運(yùn)行邏輯回歸模型。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

現(xiàn)在可以用了。但是,精度仍然和我們從數(shù)字特征標(biāo)準(zhǔn)化之后用邏輯回歸得到的一樣。這意味著我們加入的類別特征在我們的目標(biāo)函數(shù)中不是非常顯著。

練習(xí)3

試試用所有的特征作為非獨(dú)立變量進(jìn)行決策樹(shù)分類,并評(píng)論一下你得到的精度。

資料:瀏https://www.analyticsvidhya.com/blog/2016/04/complete-tutorial-tree-based-modeling-scratch-in-python/ 中關(guān)于決策樹(shù)的內(nèi)容以更好地理解。

一位有效編碼(One-Hot-Encoding,主要是采用位狀態(tài)寄存器來(lái)對(duì)某個(gè)狀態(tài)進(jìn)行編碼,每個(gè)狀態(tài)都有自己獨(dú)立的寄存器位,并且在任意時(shí)候只有一位有效——譯者注)。

一位有效編碼把每個(gè)帶有n個(gè)可能值的類別特征轉(zhuǎn)換成n個(gè)二進(jìn)制特征,只有一個(gè)是有效的。

大多數(shù)機(jī)器學(xué)習(xí)算法不是為每個(gè)特征設(shè)置單個(gè)權(quán)重就是計(jì)算樣本之間的距離。如線性模型算法(例如:邏輯回歸)屬于***類。

讓我們看一看一個(gè)來(lái)自loan_prediction數(shù)據(jù)集的例子。特征從屬(Feature Dependents)有4個(gè)可能的值:0、1、2和3+,這些是編過(guò)碼的,沒(méi)有丟掉0、1、2和3的一般性。

在線性分類器中,我們就分配一個(gè)權(quán)重“W”給這個(gè)特征,這將在W*Dependents+K>0或相當(dāng)于W*Dependents

Let f(w)= W*Dependents

讓f(w)=W*Dependents

由方程獲得的可能值是0、W、2W和3W。這個(gè)方程的一個(gè)問(wèn)題是權(quán)重W不能在4個(gè)選擇的基礎(chǔ)上得到。它可以用下面的方法來(lái)決定:

  •  所有導(dǎo)致同樣的決定(所有的值
  • 3:2的層級(jí)分配(當(dāng)f(w)>2W時(shí)的決策區(qū)間)
  •  2:2的層級(jí)分配(當(dāng)f(w)>W時(shí)的決策區(qū)間)

這里我們可以看到丟失了許多不同的可能決策,比如:“0”和“2W”應(yīng)該給予相同的標(biāo)簽,“3W”和“W”是額外的。

這個(gè)問(wèn)題可以通過(guò)一位有效編碼來(lái)解決,因?yàn)樗行У匕烟卣?ldquo;從屬”的維度從1變成4,這樣特征“從屬”的每個(gè)值將有自己的權(quán)重。更新了的決策方程將是f'(w) < K。

這里,f'(w) = W1*D_0 + W2*D_1 + W3*D_2 + W4*D_3

所有4個(gè)新變量有布爾型值(0或1)。

同樣的事發(fā)生在基于距離的方法中,如KNN。沒(méi)有編碼,“0”和“1”從屬值之間的距離是1,在“0”和“3+”之間的距離是3,這不是所期望的,因?yàn)檫@兩個(gè)距離應(yīng)該類似。在編碼后,值將有新特征(列序列是0,1,2,3+):[1,0,0,0]和[0,0,0,1](最初我們找到的在“0”和“3+”之間的距離),現(xiàn)在這個(gè)距離將會(huì)是√2。

對(duì)于基于樹(shù)的方法,同樣的情況(在一個(gè)特征中有2個(gè)以上的值)可能在一定程度上影響輸出,但是如果像隨機(jī)森林的方法,若有足夠深的深度,無(wú)需一位有效編碼就能夠處理類別變量。

現(xiàn)在,讓我們看下不同算法中的一位有效編碼的實(shí)現(xiàn)。

讓我們創(chuàng)建一個(gè)邏輯回歸模型用于分類,而不使用一位有效編碼。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

現(xiàn)在,我們對(duì)數(shù)據(jù)進(jìn)行編碼。

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

現(xiàn)在,讓我們?cè)谝晃挥行Ь幋a了的數(shù)據(jù)上應(yīng)用邏輯回歸模型

利用 Scikit Learn的Python數(shù)據(jù)預(yù)處理實(shí)戰(zhàn)指南

到此,我們?cè)俅蔚玫?**的精度是0.75,這是我們迄今所能得到的。在這個(gè)例子中,邏輯回歸正則(C)參數(shù)是1,早前我們用的是C=0.01。

結(jié)語(yǔ)

本文的目的是讓你熟悉基本的數(shù)據(jù)預(yù)處理技術(shù)并對(duì)其適用性有更深入的理解。

這些方法有用是因?yàn)樗惴ǖ幕炯僭O(shè)。這絕不是一些方法的詳盡列表的堆砌。我鼓勵(lì)你用這些方法嘗試一下,因?yàn)樗鼈兡芨鶕?jù)手頭的問(wèn)題進(jìn)行大量的修改。

在我的下一篇博文中,我計(jì)劃提供更好的數(shù)據(jù)預(yù)處理技術(shù),像管道和減噪,敬請(qǐng)關(guān)注關(guān)于數(shù)據(jù)預(yù)處理更深入的探討。

你喜歡本文嗎?你是否采用其它不同的方式、包或庫(kù)來(lái)執(zhí)行這些任務(wù)?

責(zé)任編輯:未麗燕 來(lái)源: 網(wǎng)絡(luò)大數(shù)據(jù)
相關(guān)推薦

2016-12-18 15:03:57

Python Scikit Lea數(shù)據(jù)

2024-05-15 15:27:39

2024-01-03 16:01:23

2019-02-22 08:25:19

數(shù)據(jù)清洗預(yù)處理機(jī)器學(xué)習(xí)

2015-07-22 16:16:47

PythonScikit-Lear機(jī)器學(xué)習(xí)

2018-09-06 08:00:00

深度學(xué)習(xí)TensorFlowPython

2018-10-15 09:10:09

Python編程語(yǔ)言數(shù)據(jù)科學(xué)

2021-05-12 09:58:09

PythonXGBoostscikit-lear

2021-03-28 08:57:57

Python 文本數(shù)據(jù)

2019-01-28 17:42:33

Python數(shù)據(jù)預(yù)處理數(shù)據(jù)標(biāo)準(zhǔn)化

2018-04-06 05:10:04

K-NN數(shù)據(jù)集算法

2017-11-03 12:57:06

機(jī)器學(xué)習(xí)文本數(shù)據(jù)Python

2023-05-26 12:45:22

predict?方法數(shù)據(jù)

2025-03-07 08:00:00

數(shù)據(jù)數(shù)據(jù)集集神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)處理

2020-07-08 13:46:25

Python數(shù)據(jù)分析預(yù)處理

2021-07-17 22:41:53

Python數(shù)據(jù)技術(shù)

2021-10-18 06:54:47

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

2024-07-17 14:16:40

XMLPythonWeb開(kāi)發(fā)

2024-05-06 08:41:05

Spring應(yīng)用大數(shù)據(jù)

2020-10-29 06:02:44

PythonPandasExcel
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品久久一区二区三区 | 在线午夜| 操久久久 | 在线亚洲一区 | 在线视频91| 国产伦精品一区二区三毛 | 精品三级在线观看 | 午夜精品久久久久久久久久久久久 | 精品国产免费人成在线观看 | 99国产精品久久久久 | 久久久久久久久国产 | 乳色吐息在线观看 | 成年人在线观看视频 | 男人的天堂亚洲 | 欧美xxxx网站 | 成人亚洲综合 | wwwxxx国产 | 欧美一级二级三级视频 | 成人网av | 农夫在线精品视频免费观看 | 99re热这里只有精品视频 | 成人在线观看网址 | 亚洲视频免费观看 | 欧美激情亚洲 | 欧美一区二区三区在线看 | 福利视频大全 | 91精品一区| 国产视频一区二区 | 日韩爱爱网 | 国产精品色综合 | 久久精品亚洲一区二区三区浴池 | 亚洲免费视频在线观看 | 国产精品久久av | av在线伊人 | 国产精品完整版 | 99久久精品国产一区二区三区 | 曰韩一二三区 | 黄网免费看| 国产精品久久久乱弄 | 日韩图区| 欧美一级在线免费 |