下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、引言幾年后發(fā)生了。在使用 SAS 工作超過 5 年后,我決定走出自己的舒適區(qū)。作為一個(gè)數(shù)據(jù)科學(xué)家,我尋找其他有用的工具的旅程開始了!幸運(yùn)的是,沒過多久我就決定, Python 作為我的開胃菜。我總是有一個(gè)編寫代碼的傾向。這次我做的是我真正喜歡的。代碼。原來,寫代碼是如此容易!我一周內(nèi)學(xué)會(huì)了 Python 基礎(chǔ)。并且,從那時(shí)起,我不僅深度探索了這門語言,而且也幫助了許多人學(xué)習(xí)這門語言。 Python 是一種通用語言。 但是,多年來,具有強(qiáng)大的社區(qū)支持,這一語言已經(jīng)有了專門的數(shù)據(jù)分析和預(yù)測模型庫。由于 Python 缺乏數(shù)據(jù)科學(xué)的資源, 我決定寫這篇教程來幫助別人更快地學(xué)習(xí) Python 。在本教
2、程中, 我們將講授一點(diǎn)關(guān)于如何使用 Python 進(jìn)行數(shù)據(jù)分析的信息,咀嚼它,直到我們覺得舒適并可以自己去實(shí)踐。目錄1. 數(shù)據(jù)分析的 Python 基礎(chǔ)o 為什么學(xué) Python 用來數(shù)據(jù)分析o Python 2.7 v/s 3.4o 怎樣安裝 Pythono 在 Python 上運(yùn)行一些簡單程序2. Python 的庫和數(shù)據(jù)結(jié)構(gòu)o Python 的數(shù)據(jù)結(jié)構(gòu)oPython的迭代和條件結(jié)構(gòu)oPython庫3. 在 Python 中使用 Pandas 進(jìn)行探索性分析 o 序列和數(shù)據(jù)框的簡介o 分析 Vidhya 數(shù)據(jù)集貸款的預(yù)測問題4. 在 Python 中使用 Pandas 進(jìn)行數(shù)據(jù)再加工5.
3、使用 Python 中建立預(yù)測模型 o 邏輯回歸o 決策樹o 隨機(jī)森林讓我們開始吧1. 數(shù)據(jù)分析的 Python 基礎(chǔ)為什么學(xué) Python用來數(shù)據(jù)分析很多人都有興趣選擇Python作為數(shù)據(jù)分析語言。 這一段時(shí)間以來, 我有比較過 SAS 和 R。這里有一些原因來支持學(xué)習(xí)Python :? 開源免費(fèi)安裝? 極好的在線社區(qū)? 很容易學(xué)習(xí)? 可以成為一種通用的語言, 用于基于 Web 的分析產(chǎn)品數(shù)據(jù)科學(xué)和生產(chǎn)中。不用說,它仍然有幾個(gè)缺點(diǎn):?它是一種解釋性的語言,而不是編譯的語言,因此可能占用更多的CPU時(shí)間。然而,由于它節(jié)省了程序員的時(shí)間(由于學(xué)習(xí)的方便),它可能仍然是一個(gè)很好的選擇。Python
4、 2.7 v/s 3.4這是關(guān)于 Python的一個(gè)最具爭議的話題。 你可能總是不能避免遇到, 尤其是如果你是一個(gè)初學(xué)者。這里沒有正確 / 錯(cuò)誤的選擇。 它完全取決于具體情況和你的需要。我會(huì)嘗試給你一些建議,以幫助你做出明智的選擇。為什么選擇 Python 2.71. 極好的社區(qū)支持!這是你在初期需要的東西。Python 2發(fā)行于 2000 年末,已經(jīng)被使用超過15 年。2. 很多第三方庫! 雖然許多庫已經(jīng)提供了3.X 的支持, 但仍然有大量的模塊只工作在 2.X 。如果你計(jì)劃將Python用于具體的應(yīng)用,如 Web開發(fā)這種高度依賴外部模塊的,你選擇2.7 可能會(huì)更好。3. 3.X 版本的一些
5、特性有向后兼容性,可以使用2.7 版本。為什么選擇 Python 3.41. 更整齊和更快! Python 開發(fā)者修正了一些固有的問題和小缺點(diǎn),以此為未來建立一個(gè)強(qiáng)大的基礎(chǔ)。這些可能不是很相關(guān),但最終會(huì)很重要。2. 這是未來! 2.7 是 2 .X 族發(fā)布的最后一個(gè)版本,并且最終每個(gè)人都要轉(zhuǎn)移到 3.X 版本。 Python 3 在過去 5 年已經(jīng)發(fā)布的穩(wěn)定版本,并將繼續(xù)。沒有明確的贏家, 但我想,底線是,你應(yīng)該專注于學(xué)習(xí)Python語言。版本之間的轉(zhuǎn)換應(yīng)該只是一個(gè)時(shí)間問題。敬請期待,不久的將來一個(gè)專門對比Python 2.X和 3 X 的文章!怎樣安裝 Python有兩種方法安裝Python
6、? 你可以直接從項(xiàng)目網(wǎng)站下載 Python ,然后單獨(dú)安裝你想要的組件和庫? 或者,你可以下載并安裝一個(gè)包,它附帶了預(yù)裝的庫。我建議您下載Anaconda。另一種選擇是Enthought Canopy Express。第二種方法提供了一個(gè)避免麻煩的安裝,因此我會(huì)推薦給初學(xué)者。這種方法是你必須等待整個(gè)包進(jìn)行升級, 即使你只是對一個(gè)單一的庫的最新版本感興趣。它應(yīng)該不重要,直到和除非,直到和除非,你正在做的尖端統(tǒng)計(jì)研究。選擇開發(fā)環(huán)境一旦你已經(jīng)安裝了 Python ,選擇環(huán)境可以有很多種選擇。 這里是 3 個(gè)最常見的選擇:? 終端 / 基于 Shell? IDLE( 默認(rèn)環(huán)境 )?iPython no
7、tebook類似于R 的 markdown而環(huán)境權(quán)取決于你的需要,我個(gè)人更喜歡iPython notebook一點(diǎn) 。它提供了許多良好的功能,編寫代碼的同時(shí)還可以用于記錄,你可以選擇在上面運(yùn)行代碼塊(而不是一行一行的執(zhí)行)。我們在整個(gè)教程中將使用Ipython環(huán)境熱身:跑第一個(gè)Python程序你可以使用 Python作為一個(gè)簡單的計(jì)算器來開始:有一些事情需要注意:? 你可以在你的終端 / CMD 鍵入“ IPython notebook ”來啟動(dòng) IPython notebook ,這取決于你的工作在操作系統(tǒng)?你可以通過簡單地點(diǎn)擊上面截圖中的名字來對IPython notebook命名? 界面
8、顯示 In* 代表輸入和 Out* 代表輸出。? 你可以通過按“ Shift + Enter ”或“ ALT + Enter ”來執(zhí)行代碼,如果你后面還想插入一行。在我們深入挖掘如何解決問題之前,讓我們退后一步, 了解 Python的基本知識。當(dāng)我們知道數(shù)據(jù)結(jié)構(gòu)和迭代和條件結(jié)構(gòu)是形成任何語言的關(guān)鍵。在Python中,這些包括列表、字符串、元組、字典、for 循環(huán), while 循環(huán),if-else 等等,讓我們來看看下面的因素。2 . 在 Python上運(yùn)行一些簡單程序Python的數(shù)據(jù)結(jié)構(gòu)以下是 Python中使用的一些數(shù)據(jù)結(jié)構(gòu)。 你應(yīng)該熟悉他們, 以便恰當(dāng)?shù)氖褂盟鼈儭? 列表列表是在 Py
9、thon 中最通用的數(shù)據(jù)結(jié)構(gòu)。 列表可以這樣簡單的定義:就是在方括號中一系列用逗號來分隔的值。 列表可能包含不同類型的項(xiàng),但它們通常都有相同類型的。 Python 列表是可變的,列表中的單個(gè)元素是可以改變的。這里是一個(gè)快速的例子,定義了一個(gè)列表,然后訪問它:? 字符串字符串可以簡單的使用單引號( )、雙引號(”)或三引號()來定義。字符串封閉三引號()中可以跨越多行的代碼,在文檔字符串中是很常用的(記錄功能的 Python 方式)。作為一個(gè)轉(zhuǎn)義字符。請注意, Python 中的字符串是不可變的,所以你不能改變字符串的部分。? 元組元組由一系列由逗號分隔的值表示。 元組是不可變的, 輸出的用括號
10、包圍,目的是嵌套結(jié)構(gòu)可以被正確處理。 此外,盡管元組是不可變的,但它們可以在必要是含有可變數(shù)據(jù)。因?yàn)樵M是不可變的,不可改變的,他們相對列表來說可以處理的更快。因此,如果你的清單是不可能改變的,你應(yīng)該使用元組,而不是列表。? 字典字典是鍵: 值對一個(gè)無序集合, 要求鍵是唯一的(在一個(gè)字典里) 。一對大括號創(chuàng)建一個(gè)空的字典: 。Python的迭代和條件結(jié)構(gòu)和大多數(shù)語言一樣,Python也有一個(gè) FOR 循環(huán),這是最廣泛使用的迭代方法。它有一個(gè)簡單的語法:這里的“ Python的迭代可以是列表、元組或其他先進(jìn)的數(shù)據(jù)結(jié)構(gòu),我們將在后面的章節(jié)中探討。 讓我們來看看一個(gè)簡單的例子,確定一個(gè)數(shù)字的因子。來
11、看看條件語句,它們是用來基于條件執(zhí)行代碼片段。最常用的結(jié)構(gòu)是 if-else ,有以下語法:例如,如果我們想打印出某個(gè)數(shù)字n 是偶數(shù)還是奇數(shù):既然你熟悉了Python的基礎(chǔ),我們來更近一步。如果你像完成以下任務(wù):1. 乘2矩陣2. 求二次方程的根3. 繪制條形圖和直方圖4. 建立統(tǒng)計(jì)模型5. 訪問網(wǎng)頁如果你想從零開始寫代碼,它將是一場噩夢,你使用Python不會(huì)超過 2天!但不要擔(dān)心這些。值得慶幸的是,有許多預(yù)定義的庫,我們可以直接導(dǎo)入到我們的代碼,使我們的生活很容易。例如,考慮我們剛才看到的因子的例子。我們可以一步就完成:當(dāng)然,為了這樣我們需要導(dǎo)入的math 庫。讓我們探索下一個(gè)不同的庫。P
12、ython庫在開始我們的學(xué)習(xí)Python之旅之前,讓我們先一步,了解一些有用的python庫。第一步顯然是要學(xué)會(huì)將它們導(dǎo)入到我們的環(huán)境中。在 Python中有以下幾種方法:在第一種方式中,我們已經(jīng)為 math 庫定義了一個(gè)別名 m ?,F(xiàn)在我們可以使用數(shù)學(xué)庫的各種功能(例如階乘 , 通過引用別名 m.factorial() 。第二方式,你需要導(dǎo)入 math 的整個(gè)命名空間,你可以直接使用 factorial() ,而不用提到 math 。提示:谷歌推薦您使用第一種方式導(dǎo)入庫,因?yàn)槟鷮⒅篮瘮?shù)來自何處。下面是一個(gè)庫列表,你將在任何科學(xué)計(jì)算和數(shù)據(jù)分析中用到:? NumPy 代表數(shù)值 Python 。
13、NumPy 最強(qiáng)大的功能是 n 維數(shù)組。該庫還包含基本的線性代數(shù)函數(shù),傅里葉變換,高級的隨機(jī)數(shù)功能,以及集成其他低級語言如 Fortran , C 和 C+ 的工具。? SciPy 代表科學(xué)的 Python 。SciPy 是基于 NumPy 的。它是最有用的庫之一,具有各種高層次的科學(xué)和工程模塊, 如離散傅立葉變換, 線性代數(shù),優(yōu)化和稀疏矩陣。? Matplotlib用于繪制各種各樣的圖表,從直方圖到線圖,再到熱圖。你可以在 IPython notebook中使用 PyLab( IPython notebookPyLab =inline )以此使用這些繪圖功能的inline 。如果你忽略inl
14、ine選項(xiàng), PyLab會(huì)將 IPython notebook環(huán)境轉(zhuǎn)換成類似于Matlab的環(huán)境。你也可以使用 Latex 命令將 math 庫添加到您的繪圖中。? Pandas 對于結(jié)構(gòu)化數(shù)據(jù)操作和控制。它廣泛用于數(shù)據(jù)再加工和數(shù)據(jù)準(zhǔn)備。 Pandas 說最近一直在推動(dòng)對Python Python的使用數(shù)據(jù)科學(xué)家共同體的工具。?Scikit Learn機(jī)器學(xué)習(xí)庫。 建立在 NumPy 、SciPy 和 matplotlib的基礎(chǔ)上,這個(gè)庫包含了機(jī)器學(xué)習(xí)和統(tǒng)計(jì)模型包括分類、回歸、聚類和降維等很多有效的工具。? Statsmodels 用于統(tǒng)計(jì)建模。 statsmodels 是一個(gè) Python
15、模塊,允許用戶探索數(shù)據(jù), 估計(jì)統(tǒng)計(jì)模型, 并進(jìn)行統(tǒng)計(jì)檢驗(yàn)。 一個(gè)廣泛的描述性統(tǒng)計(jì),統(tǒng)計(jì)檢驗(yàn)的列表。 繪圖功能, 和結(jié)果統(tǒng)計(jì)可用于不同類型的數(shù)據(jù)和每個(gè)估計(jì)。?Seaborn用于統(tǒng)計(jì)數(shù)據(jù)的可視化。Seaborn是Python中用來繪制讓人喜歡的并能提供大量信息的統(tǒng)計(jì)圖形庫。它是基于matplotlib。Seaborn旨在使可視化成為探索和理解數(shù)據(jù)的核心部分。? Bokeh 創(chuàng)建交互式圖、 儀表盤和現(xiàn)代 Web 瀏覽器上的數(shù)據(jù)應(yīng)用。 它允許用戶生成的優(yōu)雅和簡潔的 d3.js 風(fēng)格的圖形。此外,在非常大的或流媒體數(shù)據(jù)集上,它具有高性能的交互性的能力。? Blaze 擴(kuò)展 NumPy 和 Pandas
16、的分布式和流媒體數(shù)據(jù)集。 它可以用來訪問來自多種來源的數(shù)據(jù), 包括 bcolz ,MongoDB ,SQLAlchemy ,Apache Spark, PyTables 等等,結(jié)合 Bokeh ,Blaze 可以作為一個(gè)非常強(qiáng)大的工具,用于對大規(guī)模數(shù)據(jù)創(chuàng)建高效的的可視化和儀表板。? Scrapy 用于網(wǎng)絡(luò)爬蟲。它是用于獲取特定數(shù)據(jù)模式的一個(gè)非常有用的框架,。它可以通過開始的一個(gè)網(wǎng)站主頁的網(wǎng)址,然后通過挖掘網(wǎng)頁內(nèi)的網(wǎng)站收集信息。? SymPy 用于符號計(jì)算。 它具有廣泛的功能, 從基本的符號運(yùn)算到微積分,代數(shù),離散數(shù)學(xué)和量子物理學(xué)。 另一個(gè)有用的功能是將計(jì)算的結(jié)果格式化為 LaTeX 碼的能力。
17、?Requests用于訪問網(wǎng)絡(luò)。它的工作原理類似于Python標(biāo)準(zhǔn)庫 urllib2 ,但是更容易編碼。但對于初學(xué)者,你會(huì)發(fā)現(xiàn)和urllib2細(xì)微的差別,Requests可能更方便。其它的庫,你可能需要:? os 用于操作系統(tǒng)和文件操作?networkx和 igraph基于數(shù)據(jù)操作繪制圖形? regular expressions用于在文本數(shù)據(jù)中查找模式? BeautifulSoup將探索 Web 。它不如 Scrapy ,它一次運(yùn)行將從一個(gè)單一的網(wǎng)頁中提取信息?,F(xiàn)在我們已經(jīng)熟悉Python的基礎(chǔ)和更多的庫, 讓我們深入到通過Python解決問題。是的,我的意思是做一個(gè)預(yù)測模型!在這個(gè)過程中,
18、我們使用了一些強(qiáng)大的庫,也遇到了下一級的數(shù)據(jù)結(jié)構(gòu)。我們將帶你通過這3 個(gè)關(guān)鍵階段:1. 數(shù)據(jù)探索從我們所擁有的數(shù)據(jù)中發(fā)現(xiàn)更多2. 數(shù)據(jù)修改清理數(shù)據(jù)和并修改它使它更適合用來統(tǒng)計(jì)建模3. 預(yù)測建模運(yùn)行的實(shí)際算法,自得其樂3. 在 Python 中使用 Pandas 進(jìn)行探索性分析為了進(jìn)一步探索我們的數(shù)據(jù),讓我把你介紹給另一種動(dòng)物(好像Python是不夠的?。?PandasPandas 是 Python 最有用的一種數(shù)據(jù)分析庫的我知道這些名字聽起來很奇怪,但堅(jiān)持下去!)它們對于增加一直在增加Python在數(shù)據(jù)科學(xué)界的使用量起了很大的作用。我們現(xiàn)在將使用Pandas 從 Analytics Vidhy
19、a的競賽中讀數(shù)據(jù)集,進(jìn)行探索性分析,建立我們的第一個(gè)基本分類算法來解決這一問題。在加載數(shù)據(jù)之前,讓我們了解 Pandas 中的 2 個(gè)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)序列和數(shù)據(jù)框序列和數(shù)據(jù)框的簡介序列可以被理解為一個(gè) 1 維標(biāo)記 / 索引數(shù)組。 你可以通過這些標(biāo)簽訪問這個(gè)序列的各個(gè)元素。一個(gè)數(shù)據(jù)框類似于 Excel 工作簿你可以使用列名來引用列,可以通過行號來訪問行數(shù)據(jù),本質(zhì)的區(qū)別是,在數(shù)據(jù)幀中,列名和行號是列和行的索引。More: 10 Minutes to Pandas實(shí)踐數(shù)據(jù)集貸款預(yù)測問題您可以從這里下載數(shù)據(jù)集。這里是變量的描述:讓我們從數(shù)據(jù)探索開始開始,通過在你的你的終端/ Windows命令提示符鍵入
20、下面的代碼,來以Inline Pylab模式啟動(dòng) IPython界面:這在 PyLab 環(huán)境下打開 IPython notebook,其中有幾個(gè)有用的庫已經(jīng)導(dǎo)入。此外,你將能夠繪制您的數(shù)據(jù)內(nèi)聯(lián),這對于互動(dòng)的數(shù)據(jù)分析是一個(gè)非常好的環(huán)境。你可以通過鍵入以下命令,檢查環(huán)境是否正確的加載了(并獲得如下圖所示的輸出):plot(arange(5)我目前在 Linux 上工作,并已將數(shù)據(jù)集存儲(chǔ)在以下位置:/home/kunal/Downloads/Loan_Prediction/train.csv導(dǎo)入庫和數(shù)據(jù)集:下面是我們將在本教程中使用的庫:? numpy? matplotlib? pandas請注意,
21、你不需要導(dǎo)入matplotlib和 NumPy ,因?yàn)槭窃?PyLab 環(huán)境下。但我仍然在代碼中保留了它們,以防你在不同的環(huán)境中使用代碼。導(dǎo)入庫以后,你可以使用read_csv() 函數(shù)讀數(shù)據(jù)集。這是直到這個(gè)階段的代碼:快速數(shù)據(jù)探索一旦你讀取了數(shù)據(jù),可以通過使用head() 函數(shù)查看一下前幾行的數(shù)據(jù):這應(yīng)該打印 10 行?;蛘?,您也可以通過打印數(shù)據(jù)集來查看更多的行。接下來,你可以使用describe() 函數(shù)來查看數(shù)值字段的概要:describe() 功能將提供計(jì)數(shù)、平均、標(biāo)準(zhǔn)差(STD),最小值,分位數(shù)值和最大值(讀這篇文章來更新基本統(tǒng)計(jì)數(shù)據(jù)了解人口分布)這里有幾個(gè)結(jié)論,你可以通過查看des
22、cribe() 函數(shù)的輸出得出:1. LoanAmount 有 (614 592)22 個(gè)缺失值2. Loan_Amount_Term有 (614 600) 14 個(gè)缺失值3. Credit_History 有 (614 564)50 個(gè)缺失值4. 我們還可以看到 84% 的申請者有 credit_history ,怎么樣,credit_history的均值為 0.84 (記住,的值設(shè)置為1 ,沒有的設(shè)置為0)credit_history將那些有信用歷史5. ApplicantIncome 的分布似乎和 expectation 呈線性關(guān)系, CoapplicantIncome 也是。請注意,我
23、們通過比較的平均值和中位數(shù),即 50% 位數(shù),來得到偏差的概念。對于非數(shù)值(例如 property_area ,credit_history 等),我們可以看看頻率分布,了解他們是否有意義。頻率表可以通過以下命令打印:同樣地,我們可以看看信用卡歷史的唯一值。注意,dfname column_name 是一個(gè)基本的索引技術(shù),來訪問一個(gè)數(shù)據(jù)框的特定的列。它也可以是列的列表。想要了解更多信息,參考上面的“Pandas 10分鐘教程”的資源共享。分布分析現(xiàn)在我們熟悉了基本的數(shù)據(jù)特征,讓我們研究不同變量的分布情況。讓我們從數(shù)字變量開始即 applicantincome和 LoanAmount我們通過繪制
24、applicantincome的直方圖開始,使用下面的命令:在這里,我們觀察到,有幾個(gè)極端值。這也是分箱值為了清楚地描述它的分布。50 的原因,就是為下一步,我們看箱線圖,了解分布。fare的箱圖可以使用下面代碼繪制:這證實(shí)了大量的離群值 / 極值的存在。這可以歸因于社會(huì)上的收入差距。部分原因源于這樣一個(gè)事實(shí):我們正在查看不同的教育水平的人。讓我們根據(jù)他們所受的教育進(jìn)行分組:我們可以看到,研究生和非畢業(yè)生的平均收入之間沒有實(shí)質(zhì)性的區(qū)別。但是畢業(yè)生中高收入的人群更多,它們出現(xiàn)在異常值的點(diǎn)中?,F(xiàn)在,讓我們使用下面的命令看看LoanAmount的直方圖和箱線圖:再次,有一些異常的值。 顯然, app
25、licantincome和 LoanAmount都需要進(jìn)行一定的數(shù)據(jù)處理。 LoanAmount 有一些缺失值以及一些異常的值,而 applicantincome 有一些異常值,需要更深入的了解。我們將在即將到來的部分完成這些。分類變量的分析現(xiàn)在我們了解了applicantincome和 loanincome的分布,讓我們了解更多關(guān)于分類變量的細(xì)節(jié)。我們將使用Excel 數(shù)據(jù)透視表和交叉制表的風(fēng)格。例如,讓我們看看基于信用記錄,可以獲得貸款的可能性。這可以在微軟的Excel 上使用一個(gè)透視表實(shí)現(xiàn):注:這里的貸款狀況已被編碼,使用1 代表 yes ,而 0 代表 no ,因此,所以均值代表了獲得
26、貸款的概率?,F(xiàn)在我們將看看使用 Python 產(chǎn)生類似的效果所需要的步驟。 請參考這篇文章,以使用 Pandas 獲得不同的數(shù)據(jù)操縱技術(shù)?,F(xiàn)在我們可以觀察到, 我們得到一個(gè)像微軟的 Excel 的 pivot_table 。這可以使用 matplotlib 庫繪制成條形圖,使用下面的代碼:這表明,如果申請人有一個(gè)有效的信用記錄,獲得貸款的機(jī)會(huì)是沒有信用記錄的人的八倍。你可以根據(jù) Married, Self-Employed, Property_Area 等繪制類似的圖?;蛑@兩個(gè)圖可以進(jìn)行組合以后的可視化,使用堆疊圖表示:你還可以再上圖中加入性別變量(類似于Excel 中的數(shù)據(jù)透視表)如果你
27、還沒有意識到,我們剛剛在這里創(chuàng)建了兩個(gè)基本的分類算法,一個(gè)基于信用歷史,而另一個(gè)基于 2 個(gè)分類變量(包括性別)。你可以在 AV Datahacks 上很快的編寫代碼來創(chuàng)建首次提交。我們只看到我們?nèi)绾问褂?Python 中的 Pandas 做探索性分析。我希望你對大熊貓(動(dòng)物)的愛現(xiàn)在增加了給予一些幫助,這個(gè)庫可以為你提供分析數(shù)據(jù)集。接下來讓我們進(jìn)一步探討applicantincome和 loanstatus變量,進(jìn)行數(shù)據(jù)修改和創(chuàng)建一個(gè)數(shù)據(jù)集并應(yīng)用各種建模技術(shù)。我強(qiáng)烈要求你采用另一個(gè)數(shù)據(jù)集和習(xí)題,并在進(jìn)一步閱讀之前完成一個(gè)獨(dú)立的例子。在 Python中使用 Pandas 進(jìn)行數(shù)據(jù)再加工4. 數(shù)
28、據(jù)修改翻新的需要對于那些一直跟下來的人來說,這時(shí)你必須穿上鞋才能開始跑。在我們的探索數(shù)據(jù)期間,我們發(fā)現(xiàn)了數(shù)據(jù)集的一些問題,在數(shù)據(jù)準(zhǔn)備好建立一個(gè)好的模型之前需要解決。這個(gè)練習(xí)通常被稱為“數(shù)據(jù)修改”。這里是問題,我們已經(jīng)意識到的:1. 在一些變量中有缺失值。 我們應(yīng)該基于丟失的值的數(shù)量明智地估計(jì)這些值并評估該變量的重要性。2. 當(dāng)我們查看數(shù)據(jù)的分布時(shí), 我們看到,applicantincome和 LoanAmount似乎在兩端都含有極端值。雖然他們可能有直觀的感覺,但應(yīng)適當(dāng)處理。除了數(shù)值領(lǐng)域的這些問題,我們也應(yīng)該看看非數(shù)值領(lǐng)域Gender,Property_Area, Married,Educat
29、ion和 Dependents這些變量,看看它們是否包含任何有用的信息。如果你是 Pandas 的新手,我建議在繼續(xù)前進(jìn)之前閱讀這篇文章。它詳細(xì)介紹了一些有用的數(shù)據(jù)處理技術(shù)。檢查數(shù)據(jù)集中的缺失值讓我們看看所有的變量中的缺失值,因?yàn)榇蠖鄶?shù)模型不能處理有缺失值的數(shù)據(jù),即使他們可以,輸入它們往往不能幫助更多。所以,讓我們看看數(shù)據(jù)集中空值 /NAN值的數(shù)量:這個(gè)命令告訴我們每一列中缺失值的數(shù)量,因?yàn)槿绻禐槿笔е礽snull() 返回 1。雖然缺失值數(shù)量不是很多,但許多變量都有缺失值,它們中的每一個(gè)都應(yīng)該被估計(jì)和補(bǔ)充。通過這篇文章對不同的插值技術(shù)進(jìn)行詳細(xì)了解。注:記住,缺失值可能并不總是NaN 。例如
30、,如果 loan_amount_term是0,它是有意義的或者你認(rèn)為是缺失的?我想你的答案是缺失的,你是對的。所以我們應(yīng)該檢查那些不切實(shí)際的值。如何填補(bǔ) LoanAmount的缺失值?有許多方法來填補(bǔ)價(jià)值貸款金額的缺失值, 最簡單的就是使用均值來替換,可以通過以下代碼實(shí)現(xiàn):另一個(gè)極端是可以建立一個(gè)監(jiān)督學(xué)習(xí)模型來基于其他變量預(yù)測貸款金額,然后使用年齡以及其他變量來預(yù)測。既然,現(xiàn)在的目標(biāo)是講述數(shù)據(jù)修改的步驟,我寧愿采取一種方法,它介于這 2 個(gè)極端方法之間。一個(gè)關(guān)鍵的假設(shè)是,一個(gè)人是否受教育的或是否自雇人士可以結(jié)合起來,提供一個(gè)很好的貸款金額的估計(jì)。首先,讓我們看看箱線圖看是否有某種趨勢存在:因此
31、我們看到在每一組中貸款金額的中位數(shù)的一些變化而這可以用來估計(jì)值。但首先,我們必須確保每個(gè) self_employed 和 Education 變量 不應(yīng)該有缺失值。如我們先前所說, self_employed有缺失值。讓我們看看頻率表:因?yàn)?86% 的值是“ No ”,將缺失值估計(jì)為“ No ”是比較可靠的,有很高的成功概率。這可以用下面的代碼來完成:現(xiàn)在,我們將創(chuàng)建一個(gè)數(shù)據(jù)透視表,它提供了我們所有 Education 和 self_employed 變量的唯一值分組的中位數(shù)。 接下來,我們定義了一個(gè)函數(shù),它返回這些單元格的值,并應(yīng)用它來填充丟失的貸款金額的值:這應(yīng)該給你提供了一個(gè)估計(jì)貸款金額
32、的缺失值好方法。如何處理在 LoanAmount和 applicantincome分布中的極值?讓我們先分析 LoanAmount 。由于極端值可能是現(xiàn)實(shí)的的,即一些人可能會(huì)由于特定的需求,申請高額的貸款,。所以,不把它們當(dāng)做離群點(diǎn)對待,讓我們嘗試對數(shù)據(jù)轉(zhuǎn)換從而發(fā)揮它們的作用:再看直方圖:現(xiàn)在的分布看起來更接近標(biāo)準(zhǔn)的,極端值的影響已經(jīng)顯著消退。來看看 applicantincome 。一種直覺可以是一些申請人有較低的收入,但有一個(gè)有力的支持,共同申請者。所以將兩者的收入結(jié)合起來作為總收入可能是一個(gè)好主意,并采取相同的對數(shù)變換?,F(xiàn)在我們看到,分布比以前好多了。我會(huì)把 Gender, Marrie
33、d, Dependents,Loan_Amount_Term, Credit_History等缺失值的估計(jì)留給你。此外,我鼓勵(lì)你考慮可能的額外的信息,可以來自數(shù)據(jù)。例如,創(chuàng)建一個(gè)LoanAmount/TotalIncome列可能會(huì)有意義,因?yàn)樗芙o你一個(gè)關(guān)于申請人如何償還他的貸款的好想法。下一步,我們將研究預(yù)測模型。5. 使用 Python 中建立預(yù)測模型之后,我們已經(jīng)使數(shù)據(jù)可以用于建模, 現(xiàn)在讓我們來看看 Python 代碼,來在我們的數(shù)據(jù)集上創(chuàng)建一個(gè)預(yù)測模型。 Skicit-kearn (sklearn )是 Python 中最常用于此目的的庫,我們將跟隨這條小徑。我建議你通過這篇文章來復(fù)
34、習(xí)進(jìn)修 sklearn 。因?yàn)?,sklearn 要求所有輸入都是數(shù)字, 我們應(yīng)該通過編碼類別將我們所有的分類變量轉(zhuǎn)換為數(shù)值型。這可以用下面的代碼來完成:下一步,我們將導(dǎo)入所需的模塊。然后,我們將定義一個(gè)通用的分類函數(shù),它需要一個(gè)模型作為輸入,并確定準(zhǔn)確性度和交叉驗(yàn)證分?jǐn)?shù)。由于這是一篇介紹性文章,我將不會(huì)進(jìn)入編碼的細(xì)節(jié)。請參考這篇文章得到詳細(xì)的算法以及 R 和 Python 的代碼。此外,通過本文復(fù)習(xí)一下交叉驗(yàn)證會(huì)更好,因?yàn)樗且粋€(gè)非常重要的性能測量方法。邏輯回歸讓我們做我們的第一個(gè)邏輯回歸模型。一個(gè)方法就是把所有的變量都加入模型,這可能會(huì)導(dǎo)致過度擬合(如果你還不知道這個(gè)術(shù)語,不要擔(dān)心)。簡單的
35、說,考慮所有的變量可能會(huì)導(dǎo)致模型的理解出比較復(fù)雜的關(guān)系,對于具體的數(shù)據(jù),不能很好的概括。閱讀更多關(guān)于邏輯回歸。我們可以很容易地作出一些直觀的假設(shè)來設(shè)定啟動(dòng)資金。獲得貸款的機(jī)會(huì)將更高:1. 有信用記錄的申請人(記得我們在探索時(shí)觀察到的?)2. 申請人或著共同申請人具有較高收入的申請3. 申請人具有較高的教育水平屬性4. 在具有高增長前景的城市地區(qū)讓我們使用 credit_history建立我們的第一個(gè)模型。準(zhǔn)確度: 80.946%交叉驗(yàn)證得分: 80.945%準(zhǔn)確度: 80.946%交叉驗(yàn)證得分: 80.945%一般來說,我們期望通過增加變量來提高準(zhǔn)確度。但這是一個(gè)更具挑戰(zhàn)性的案例。準(zhǔn)確度和交叉驗(yàn)證得分不受那些影響較小變量的影響。 credit_history 主導(dǎo)模式。我們現(xiàn)在有兩個(gè)選擇:1. 工程特征:導(dǎo)出新信息并試圖預(yù)測。我將把這留給你的創(chuàng)造力。2. 更好的建模技術(shù)。讓我們探索這
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度市場營銷經(jīng)理聘用合同書樣本3篇
- 2024年新型城鎮(zhèn)化建設(shè)三方合作協(xié)議書3篇
- 2024年度餐飲連鎖企業(yè)泔水處理與資源化利用承包協(xié)議3篇
- 2024年度房地產(chǎn)首付分期合同范本解析手冊3篇
- 2024年度太陽能發(fā)電項(xiàng)目EPC總包合同2篇
- 2024年度集體土地上房屋轉(zhuǎn)讓及環(huán)境保護(hù)責(zé)任一并轉(zhuǎn)讓合同3篇
- 廚房功能與美觀并重
- 2024年土地使用權(quán)抵押貸款項(xiàng)目實(shí)施合同3篇
- 2024年化工設(shè)備定期檢測與維修服務(wù)協(xié)議3篇
- 2024年分店承包經(jīng)營協(xié)議3篇
- GB/T 29309-2012電工電子產(chǎn)品加速應(yīng)力試驗(yàn)規(guī)程高加速壽命試驗(yàn)導(dǎo)則
- GB 29216-2012食品安全國家標(biāo)準(zhǔn)食品添加劑丙二醇
- 齊魯工業(yè)大學(xué)信息管理學(xué)成考復(fù)習(xí)資料
- 公務(wù)員面試-自我認(rèn)知與職位匹配課件
- 中頻電治療儀操作培訓(xùn)課件
- 柔弱的人課文課件
- 動(dòng)物寄生蟲病學(xué)課件
- 電梯曳引系統(tǒng)設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 三度房室傳導(dǎo)阻滯護(hù)理查房課件
- 講課比賽精品PPT-全概率公式貝葉斯公式-概率論與數(shù)理統(tǒng)計(jì)
- 藥理學(xué)39人工合成抗菌藥課件
評論
0/150
提交評論