![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-8/13/20/2f2f7deb-7c30-4af2-b802-56f01a3e0026/2f2f7deb-7c30-4af2-b802-56f01a3e0026pic.jpg)
![python-pandas-數(shù)據(jù)分析技術(shù)與編程方法講座_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-8/13/20/2f2f7deb-7c30-4af2-b802-56f01a3e0026/2f2f7deb-7c30-4af2-b802-56f01a3e00261.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Python Pandas 數(shù)據(jù)分析技術(shù)與編程方法,,Python入門開發(fā)環(huán)境IDEpandas數(shù)據(jù)分析庫數(shù)據(jù)規(guī)整化數(shù)據(jù)聚合與分組實(shí)例分析——泰坦尼克之災(zāi),目錄,Python是自由軟件豐碩成果之一創(chuàng)始人 Guido van Rossum時(shí)間地點(diǎn) 1989年圣誕節(jié)期間在阿姆斯特丹創(chuàng)造名字來源 大蟒蛇飛行馬戲團(tuán)愛好者淵源 從ABC發(fā)展而來
2、 主要受Modula-3的影響 結(jié)合了Unix shell和C的習(xí)慣,Python的歷史,Python是一種面向?qū)ο蟮慕忉屝哉Z言免費(fèi)的可移植的可擴(kuò)展的簡單的萬能的,Python的語言特點(diǎn),Python是一種語法簡單的腳本語言運(yùn)行方式 命令行、交互式、圖形集成環(huán)境面向?qū)ο?甚至還支持異常處理模塊和包 與Java類似,還開發(fā)了JPy
3、thon語言擴(kuò)展 可以用C/C++/Java編寫新的語言模塊豐富的庫 數(shù)據(jù)分析/科學(xué)計(jì)算/機(jī)器學(xué)習(xí)/GUI/ ... ...,Python的語法特點(diǎn),它使程序員的生活更有趣簡單易學(xué)功能豐富誰在使用Python呢?GoogleNASA豆瓣......,Python的魅力,當(dāng)我們編寫Python代碼時(shí),我們得到的是一個(gè)包含Python代碼的以.py為擴(kuò)展名的文本文件。要運(yùn)行代碼,就需要Python解釋器去
4、執(zhí)行.py文件。,Python解釋器,CPython當(dāng)我們從Python官方網(wǎng)站下載并安裝好Python 2.7后,我們就直接獲得了一個(gè)官方版本的解釋器:CPython。這個(gè)解釋器是用C語言開發(fā)的,所以叫CPython。在命令行下運(yùn)行python就是啟動(dòng)CPython解釋器。CPython是使用最廣的Python解釋器。,Python解釋器,IPythonIPython是基于CPython之上的一個(gè)交互式解釋器,也就是說,IPyt
5、hon只是在交互方式上有所增強(qiáng),但是執(zhí)行Python代碼的功能和CPython是完全一樣的。CPython用>>>作為提示符,而IPython用In [序號(hào)]:作為提示符。,Python解釋器,PyPyPyPy是另一個(gè)Python解釋器,它的目標(biāo)是執(zhí)行速度。PyPy采用JIT技術(shù),對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋),所以可以顯著提高Python代碼的執(zhí)行速度。絕大部分Python代碼都可以在PyPy下
6、運(yùn)行,但是PyPy和CPython有一些是不同的,這就導(dǎo)致相同的Python代碼在兩種解釋器下執(zhí)行可能會(huì)有不同的結(jié)果。如果你的代碼要放到PyPy下執(zhí)行,就需要了解PyPy和CPython的不同點(diǎn)。,Python解釋器,JythonJython是運(yùn)行在Java平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。,Python解釋器,IronPythonIronPython和Jython類似,只不過IronP
7、ython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。,Python解釋器,OS: 64位 windows 7 Version:python-2.7.11.msi注意:1.安裝時(shí)勾選add to environment,默認(rèn)安裝pip2.添加pip環(huán)境變量 path = C:\Python27\ScriptsPyPI (PythonPackageIndex)
8、是python官方的第三方庫的倉庫,pip是一個(gè)安裝和管理Python包的工具。,Windows下 Python 安裝與配置,python shellIDLE(Python GUI)ipython Notepad++PyCharm,Python開發(fā)環(huán)境,eclipse +PyDev IDE配置PyDev Interpreter打開 Window->Preferences.對(duì)話框,選擇" PyDev"
9、->"Interpreter Python", 點(diǎn)擊New,從Python的安裝路徑下選擇Python.exe。也可以點(diǎn)Auto Config自動(dòng)配置,會(huì)搜索安裝好的python自動(dòng)配置。,Python開發(fā)環(huán)境,Python開發(fā)環(huán)境,Python文件不支持中文注釋問題:# coding=#!/usr/bin/python# -*- coding: -*-#!/usr/bin/python# v
10、im: set fileencoding= :eg:# coding=utf-8,特別注意:Python文件編碼聲明,Python中行首的空白是重要的,它稱為縮進(jìn)。在邏輯行首的空白(空格和制表符)用來決定邏輯行的縮進(jìn)層次,從而用來決定語句的分組。 if 0==1: print 'We are in a world of arithmetic pain' print 'Tha
11、nk you for playing' 將輸出Thank you for playing if 0==1: print 'We are in a world of arithmetic pain' print 'Thank you for playing' 將不會(huì)有輸出,特別注意:縮進(jìn),可以使用空格或制表符產(chǎn)生縮進(jìn),兩個(gè)空格或四個(gè)空格都是可以
12、的,不過一般建議使用一個(gè)制表符TAB產(chǎn)生縮進(jìn),你的程序應(yīng)該固定使用一種縮進(jìn)規(guī)則。Python代碼縮進(jìn)決定了代碼的邏輯關(guān)系,而不僅僅是為了好看?。?!,特別注意:縮進(jìn),pandas 數(shù)據(jù)分析numpy 科學(xué)計(jì)算包scipy 科學(xué)計(jì)算包matplotlib 畫圖/表scikit-learn 機(jī)器學(xué)習(xí)庫Seaborn 數(shù)據(jù)可視化工具包,常用擴(kuò)展包,Python的一個(gè)數(shù)據(jù)分析包
13、AQR Capital Management于2008年4月開發(fā)2009年底開源目前由專注于Python數(shù)據(jù)包開發(fā)的PyData開發(fā)team繼續(xù)開發(fā)和維護(hù),屬于PyData項(xiàng)目的一部分。約定俗成的導(dǎo)入慣例: In [1]: from pandas import Series, DataFrame In [2]: import pandas as pd,Pandas,1.SeriesSeries是一維標(biāo)記數(shù)組,可
14、以存儲(chǔ)任意數(shù)據(jù)類型,如整型、字符串、浮點(diǎn)型和Python對(duì)象等,軸標(biāo)一般指索引。Series Numpy中的一維array Python基本數(shù)據(jù)結(jié)構(gòu)List區(qū)別:List中的元素可以是不同的數(shù)據(jù)類型,而Array和Series中則只允許存儲(chǔ)相同的數(shù)據(jù)類型,這樣可以更有效的使用內(nèi)存,提高運(yùn)算效率。,Pandas中的數(shù)據(jù)結(jié)構(gòu),2. DataFrame DataFrame是二維標(biāo)記數(shù)據(jù)結(jié)構(gòu),列可以是不同的數(shù)據(jù)類型。它是最
15、常用的pandas對(duì)象,像Series一樣可以接收多種輸入:lists、dicts、series和DataFrame等。初始化對(duì)象時(shí),除了數(shù)據(jù)還可以傳index和columns這兩個(gè)參數(shù)。,Pandas中的數(shù)據(jù)結(jié)構(gòu),3. PanelPanel很少使用,然而是很重要的三維數(shù)據(jù)容器。Panel data源于經(jīng)濟(jì)學(xué),也是pan(el)-da(ta)-s的來源。,Pandas中的數(shù)據(jù)結(jié)構(gòu),4. Panel4DPanel4D是像Panel一樣
16、的4維容器,作為N維容器的一個(gè)測(cè)試。Panel4D是Panel的一個(gè)子集,因此Panel的大多數(shù)方法可用于4D,但以下方法不可用:join, to_excel, to_frame, to_sparse, groupby。,Pandas中的數(shù)據(jù)結(jié)構(gòu),5. PanelNDPanelND是一個(gè)擁有factory集合,可以創(chuàng)建像Panel4D一樣N維命名容器的模塊。,Pandas中的數(shù)據(jù)結(jié)構(gòu),通過傳遞一個(gè)list對(duì)象來創(chuàng)建Series,默認(rèn)
17、創(chuàng)建整型索引;In [4]: obj = Series([4, 7, -5, 3])創(chuàng)建一個(gè)帶有索引來確定每一個(gè)數(shù)據(jù)點(diǎn)的Series ;In [8]: obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])如果你有一些數(shù)據(jù)在一個(gè)Python字典中,你可以通過傳遞字典來創(chuàng)建一個(gè)Series;In [11]:
18、sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}In [12]: obj3 = Series(sdata)In [14]: states = ['California', 'Ohio', 'Oregon', 'Texas
19、39;]In [15]: obj4 = Series(sdata, index=states),Series相關(guān)操作——?jiǎng)?chuàng)建,通過一個(gè)布爾數(shù)組過濾,純量乘法,或使用數(shù)學(xué)函數(shù),將會(huì)保持索引和值間的關(guān)聯(lián):,Series相關(guān)操作,Series是一個(gè)定長的,有序的字典,因?yàn)樗阉饕椭涤成淦饋砹?。它可以適用于許多期望一個(gè)字典的函數(shù):,Series相關(guān)操作,在pandas中用函數(shù) isnull 和 notnull 來檢測(cè)數(shù)據(jù)丟失:pd.isn
20、ull(obj4)pd.notnull(obj4)Series也提供了這些函數(shù)的實(shí)例方法:obj4.isnull(),Series相關(guān)操作,Series的一個(gè)重要功能是在算術(shù)運(yùn)算中它會(huì)自動(dòng)對(duì)齊不同索引的數(shù)據(jù):,Series相關(guān)操作,Series對(duì)象本身和它的索引都有一個(gè) name 屬性,它和pandas的其它一些關(guān)鍵功能整合在一起:,Series相關(guān)操作,從坐標(biāo)軸刪除條目,drop 方法將會(huì)返回一個(gè)新的對(duì)象并從坐標(biāo)軸中刪除指定的一
21、個(gè)或多個(gè)值:,Series相關(guān)操作,Series除了可以使用索引值,也可以僅使用整數(shù)來索引:,Series相關(guān)操作,直方圖:,Series相關(guān)操作,字符串方法:,Series相關(guān)操作,通過傳遞一個(gè)NumPy array,時(shí)間索引以及列標(biāo)簽來創(chuàng)建一個(gè)DataFrame;用一個(gè)相等長度列表的字典;它的索引會(huì)自動(dòng)分配,并且對(duì)列進(jìn)行了排序;如果設(shè)定了一個(gè)列的順序,DataFrame的列將會(huì)精確的按照所傳遞的順序排列;,DataFrame相
22、關(guān)操作——?jiǎng)?chuàng)建,通過一個(gè)嵌套的字典格式創(chuàng)建DataFrame:外部鍵會(huì)被解釋為列索引,內(nèi)部鍵會(huì)被解釋為行索引;內(nèi)部字典的鍵被結(jié)合并排序來形成結(jié)果的索引; 可以對(duì)結(jié)果轉(zhuǎn)置:,DataFrame相關(guān)操作——?jiǎng)?chuàng)建,DataFrame中的一列可以通過字典記法或?qū)傩詠頇z索:注意,返回的Series包含和DataFrame相同的索引,并它們的 name 屬性也被正確的設(shè)置了。,DataFrame相關(guān)操作——檢索,為
23、了使DataFrame可以 在行上進(jìn)行標(biāo)簽索引, 將介紹特殊的索引字段 ix 。這使你可以從 DataFrame選擇一個(gè)行 和列的子集,這也是一 種不是很冗長的重新索 引的方法。,DataFrame相關(guān)操作——檢索,對(duì)于DataFrame,有很多方法來選擇和重排包含在pandas對(duì)象中的數(shù)據(jù)。,DataFrame相關(guān)操作——檢索,列可以通過賦值來修改。例如,空的‘debt’列可以
24、通過一個(gè)純量或一個(gè)數(shù)組來賦值;注意:通過列表或數(shù)組給一列賦值時(shí),所賦的值的長度必須和DataFrame的長度相匹配。使用Series來賦值,它會(huì)代替在DataFrame中精確匹配的索引的值,并在所有的空洞插入丟失數(shù)據(jù)NaN;給一個(gè)不存在的列賦值,將會(huì)創(chuàng)建一個(gè)新的列;,DataFrame相關(guān)操作——賦值,pandas的最重要的特性之一是在具有不同索引的對(duì)象間進(jìn)行算術(shù)運(yùn)算。當(dāng)把對(duì)象加起來時(shí),如果有任何索引對(duì)不相同的話,在結(jié)果中將會(huì)把各
25、自的索引聯(lián)合起來。,DataFrame相關(guān)操作——算術(shù)運(yùn)算,在不同索引對(duì)象間的算術(shù)運(yùn)算,當(dāng)一個(gè)軸標(biāo)簽在另一個(gè)對(duì)象中找不到時(shí),你可能想要填充一個(gè)特定的值,如0。How to do it?,DataFrame相關(guān)操作,對(duì)于DataFrame,可以從任何坐標(biāo)軸刪除索引值:像字典一樣 del 關(guān)鍵字將會(huì)刪除列:,DataFrame相關(guān)操作,寫入excel文件:df.to_excel('foo.xlsx', sh
26、eet_name='Sheet1')從excel文件中讀?。簆d.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])寫入csv文件:df.to_csv('foo.csv')從csv文件中讀?。簆d.read_csv('foo.csv')寫入HDF5
27、存儲(chǔ):df.to_hdf('foo.h5','df')從HDF5存儲(chǔ)中讀?。簆d.read_hdf('foo.h5','df'),DataFrame相關(guān)操作——導(dǎo)入和保存數(shù)據(jù),首先,作為一個(gè)激發(fā)性的例子,考慮一個(gè)二維數(shù)組和它的一個(gè)行間的差分:這被稱為 廣播 (broadcasting)。,DataFrame 和 Series 間的操作,在一個(gè)DataFra
28、me和一個(gè)Series間的操作是類似的:,DataFrame 和 Series 間的操作,pandas的索引對(duì)象用來保存坐標(biāo)軸標(biāo)簽和其它元數(shù)據(jù)(如坐標(biāo)軸名或名稱)。構(gòu)建一個(gè)Series或DataFrame時(shí)任何數(shù)組或其它序列標(biāo)簽在內(nèi)部轉(zhuǎn)化為索引:,pandas的索引對(duì)象,索引對(duì)象是不可變的,不能由用戶改變:索引對(duì)象的不可變性非常重要,這樣它可以在數(shù)據(jù)結(jié)構(gòu)中結(jié)構(gòu)中安全的共享:,pandas的索引對(duì)象,pandas中的主要索引對(duì)象
29、:,pandas的索引對(duì)象,除了類似于陣列,索引也有類似固定大小集合一樣的功能:,pandas的索引對(duì)象,每個(gè)索引都有許多關(guān)于集合邏輯的方法和屬性,且能夠解決它所包含的數(shù)據(jù)的常見問題。,pandas的索引對(duì)象,reindex,意味著使數(shù)據(jù)符合一個(gè)新的索引來構(gòu)造一個(gè)新的對(duì)象。在Series上調(diào)用 reindex 重排數(shù)據(jù),使得它符合新的索引,如果那個(gè)索引的值不存在就引入缺失數(shù)據(jù)值:,pandas對(duì)象的一個(gè)關(guān)鍵方法——重新索引,為了對(duì)時(shí)間
30、序列這樣的數(shù)據(jù)排序,當(dāng)重建索引的時(shí)候可能想要對(duì)值進(jìn)行內(nèi)插或填充。 method 選項(xiàng)可以是你做到這一點(diǎn),使用一個(gè)如 ffill 的方法來向前填充值:reindex 的 method(內(nèi)插)選項(xiàng):,pandas對(duì)象的一個(gè)重要功能——重新索引,對(duì)于DataFrame, reindex 可以改變(行)索引,列或兩者。當(dāng)只傳入一個(gè)序列時(shí),結(jié)果中的行被重新索引了:,pandas對(duì)象的一個(gè)重要功能——重新索引,使用 columns 關(guān)鍵
31、字可以使列重新索引:,pandas對(duì)象的一個(gè)重要功能——重新索引,一次可以對(duì)兩個(gè)重新索引,可是插值只在行側(cè)(0坐標(biāo)軸)進(jìn)行:,pandas對(duì)象的一個(gè)重要功能——重新索引,使用帶標(biāo)簽索引的 ix 可以把重新索引做的更簡單:,pandas對(duì)象的一個(gè)重要功能——重新索引,reindex 函數(shù)的參數(shù):,pandas對(duì)象的一個(gè)重要功能——重新索引,Pandas提供了大量的方法能夠輕松的對(duì)Series,DataFrame和Panel對(duì)象進(jìn)行各種符合
32、各種邏輯關(guān)系的合并操作。ConcatMerge (類似于SQL類型的合并)Append (將一行連接到一個(gè)DataFrame上),數(shù)據(jù)規(guī)整化——合并,concat,數(shù)據(jù)規(guī)整化——合并,merge默認(rèn)情況下,merge做的是“inner”連接,結(jié)果中的鍵是交集。其他方式還有“l(fā)eft”,“right”以及“outer”。,數(shù)據(jù)規(guī)整化——合并,append,數(shù)據(jù)規(guī)整化——合并,Stack/unstack,數(shù)據(jù)規(guī)整化——
33、重塑,數(shù)據(jù)透視表,數(shù)據(jù)規(guī)整化——重塑,DataFrame中常常會(huì)出現(xiàn)重復(fù)行,DataFrame的duplicated方法返回一個(gè)布爾型Series,表示各行是否是重復(fù)行;還有一個(gè)drop_duplicated方法,它返回一個(gè)移除了重復(fù)行的DataFrame:,數(shù)據(jù)規(guī)整化——清理,執(zhí)行描述性統(tǒng)計(jì):df.mean()在其它軸上進(jìn)行描述性統(tǒng)計(jì):df.mean(1),數(shù)據(jù)聚合與分組,對(duì)數(shù)據(jù)應(yīng)用函數(shù):,數(shù)據(jù)聚合與分組,對(duì)于”group by”操
34、作,我們通常是指以下一個(gè)或多個(gè)操作步驟:(Splitting)按照一些規(guī)則將數(shù)據(jù)分為不同的組;(Applying)對(duì)于每組數(shù)據(jù)分別執(zhí)行一個(gè)函數(shù);(Combining)將結(jié)果組合到一個(gè)數(shù)據(jù)結(jié)構(gòu)中;,數(shù)據(jù)聚合與分組,分組并對(duì)每個(gè)分組執(zhí)行sum函數(shù):通過多個(gè)列進(jìn)行分組形成一個(gè)層次索引,然后執(zhí)行函數(shù):,數(shù)據(jù)聚合與分組,泰坦尼克號(hào)問題之背景:就是大家都熟悉的『Jack and Rose』的故事,豪華游艇快沉了,大家都驚恐逃生,可
35、是救生艇的數(shù)量有限,無法人人都上,副船長發(fā)話了『lady and kid first!』,所以是否獲救其實(shí)并非隨機(jī),而是基于一些背景有rank先后的。訓(xùn)練和測(cè)試數(shù)據(jù)是一些乘客的個(gè)人信息以及存活狀況,要嘗試根據(jù)它生成合適的模型并預(yù)測(cè)其他人的存活狀況。這是一個(gè)二分類問題,是logistic regression所能處理的范疇。,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),從機(jī)器學(xué)習(xí)問題角度監(jiān)督學(xué)習(xí)無監(jiān)督學(xué)習(xí)半監(jiān)督學(xué)習(xí),機(jī)器學(xué)習(xí)——算
36、法概覽,從算法的功能角度回歸算法(Regression Algorithms)基于實(shí)例的算法(Instance-based Algorithms)決策樹類算法(Decision Tree Algorithms)貝葉斯類算法(Bayesian Algorithms)聚類算法(Clustering Algorithms)人工神經(jīng)網(wǎng)絡(luò)類算法(Artificial Neural Network Algorithms)深度學(xué)習(xí)(De
37、ep Learning Algorithms)降維算法(Dimensionality Reduction Algorithms)模型融合算法(Ensemble Algorithms),機(jī)器學(xué)習(xí)——算法概覽,機(jī)器學(xué)習(xí)——算法概覽,預(yù)測(cè)結(jié)果如果是離散值(比如郵件分類問題中的垃圾郵件/普通郵件,比如用戶會(huì)/不會(huì)購買某商品),那么我們把它叫做分類問題(classification problem);樸素貝葉斯、邏輯回歸、支持向量機(jī)等預(yù)測(cè)
38、結(jié)果是連續(xù)值(比如房價(jià),股票價(jià)格等等),那么我們把它叫做回歸問題(regression problem)。線性回歸等,機(jī)器學(xué)習(xí)——分類與回歸,邏輯回歸 監(jiān)督學(xué)習(xí) 分類問題邏輯回歸的成功之處在于,將原本輸出結(jié)果通過sigmoid函數(shù)映射到(0,1),從而完成概率的估測(cè)。邏輯回歸能夠較好地把兩類樣本點(diǎn)分隔開,解決分類問題。,機(jī)器學(xué)習(xí)——邏輯回歸,泰坦尼克號(hào)問題之背景:就是大家都熟悉的『Jack and Rose』的故事,豪華游艇
39、快沉了,大家都驚恐逃生,可是救生艇的數(shù)量有限,無法人人都上,副船長發(fā)話了『lady and kid first!』,所以是否獲救其實(shí)并非隨機(jī),而是基于一些背景有rank先后的。訓(xùn)練和測(cè)試數(shù)據(jù)是一些乘客的個(gè)人信息以及存活狀況,要嘗試根據(jù)它生成合適的模型并預(yù)測(cè)其他人的存活狀況。這是一個(gè)二分類問題,是logistic regression所能處理的范疇。
40、 https://www.kaggle.com/,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),import pandas as pd #數(shù)據(jù)分析import numpy as np #科學(xué)計(jì)算from pandas import Series,DataFramedata_train = pd.read_csv("/Users/WGW/Titanic_data/Train.csv")data_train,實(shí)
41、例——邏輯回歸Kaggle泰坦尼克之災(zāi),data_train如下所示:,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),訓(xùn)練數(shù)據(jù)中總共有891名乘客,but有些屬性的數(shù)據(jù)不全,比如說:Age(年齡)屬性只有714名乘客有記錄Cabin(客艙)更是只有204名乘客是已知的,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),我們用下列的方法,得到數(shù)值型數(shù)據(jù)的一些分布:mean字段告訴我們,大概0.383838的人最后獲救了,平均乘客年齡
42、大概是29.7歲(計(jì)算這個(gè)時(shí)候會(huì)略掉無記錄的)…,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),統(tǒng)計(jì)乘客各屬性分部:,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),1、被救的人300多點(diǎn),不到半數(shù);2、3等艙乘客非常多;3、遇難和獲救的人年齡似乎跨度都很廣;4、3個(gè)不同的艙年齡總體趨勢(shì)似乎也一致,3等艙乘客20歲多點(diǎn)的人最多, 1等艙40歲左右的最多;5、登船港口人數(shù)按照S、C、Q遞減
43、,而且S遠(yuǎn)多于另外兩港口。,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),可能會(huì)有一些想法了:1、不同艙位/乘客等級(jí)可能和財(cái)富/地位有關(guān)系,最后獲救概率可能會(huì)不一樣?2、年齡對(duì)獲救概率也一定是有影響的,畢竟前面說了,副船長還說『小孩和女士先走』呢?3、和登船港口是不是有關(guān)系呢?也許登船港口不同,人的出身地位不同?,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),屬性與獲救結(jié)果的關(guān)聯(lián)統(tǒng)計(jì):,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),實(shí)例——邏
44、輯回歸Kaggle泰坦尼克之災(zāi),實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),先把Cabin缺失與否作為條件(雖然這部分信息缺失可能并非未登記,丟失了而已?所以這樣做未必妥當(dāng)),先在有無Cabin信息這個(gè)粗粒度上看看Survived的情況。,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),大體數(shù)據(jù)的情況看了一遍,對(duì)感興趣的
45、屬性也有個(gè)大概的了解了。 下一步干啥?處理處理這些數(shù)據(jù)(feature engineering過程),為機(jī)器學(xué)習(xí)建模做點(diǎn)準(zhǔn)備吧,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),Cabin:按Cabin有無數(shù)據(jù),將這個(gè)屬性處理成Yes和No兩種類型吧。Age:通常遇到缺值的情況,我們會(huì)有幾種常見的處理方式。,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),缺失數(shù)據(jù)常用處理方式:1、如果缺值的樣本占總數(shù)比例極高,我們可能就直接舍棄了,作為特征加
46、入的話,可能反倒帶入noise,影響最后的結(jié)果了。2、如果缺值的樣本適中,而該屬性非連續(xù)值特征屬性(比如說類目屬性),那就把NaN作為一個(gè)新類別,加到類別特征中。3、如果缺值的樣本適中,而該屬性為連續(xù)值特征屬性,有時(shí)候我們會(huì)考慮給定一個(gè)step(比如這里的age,我們可以考慮每隔2/3歲為一個(gè)步長),然后把它離散化,之后把NaN作為一個(gè)type加到屬性類目中。4、有些情況下,缺失的值個(gè)數(shù)并不是特別多,那我們也可以試著根據(jù)已有的值,
47、擬合一下數(shù)據(jù),補(bǔ)充上。,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),用scikit-learn中的RandomForest來擬合缺失的年齡數(shù)據(jù):,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),因?yàn)檫壿嫽貧w建模時(shí),需要輸入的特征都是數(shù)值型特征,我們通常會(huì)先對(duì)類目型的特征因子化。 什么叫做因子化呢?舉個(gè)例子:以Cabin為例,原本一個(gè)屬性維度,因?yàn)槠淙≈悼梢允荹‘yes’,’no’],而將其平展開為’
48、Cabin_yes’,’Cabin_no’兩個(gè)屬性。原本Cabin取值為yes的,在此處的”Cabin_yes”下取值為1,在”Cabin_no”下取值為0原本Cabin取值為no的,在此處的”Cabin_yes”下取值為0,在”Cabin_no”下取值為1,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),使用pandas的”get_dummies”來完成特征因子化,并拼接在原來的”data_train”之上:,實(shí)例——邏輯回歸Kaggl
49、e泰坦尼克之災(zāi),各屬性值之間scale差距太大,將對(duì)收斂速度造成幾萬點(diǎn)傷害值!甚至不收斂! 先用scikit-learn里面的preprocessing模塊做一個(gè)scaling,所謂scaling,其實(shí)就是將一些變化幅度較大的特征化到[-1,1]之內(nèi)。,實(shí)例——邏輯回歸Kaggle泰坦尼克之災(zāi),把需要的feature字段取出來,轉(zhuǎn)成numpy格式,使用scikit-learn中的LogisticRegression建模:,實(shí)例——邏輯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- python數(shù)據(jù)分析與可視化教案1.1 認(rèn)識(shí)數(shù)據(jù)分析
- python數(shù)據(jù)分析與挖掘 教學(xué)大綱
- python數(shù)據(jù)分析與可視化教案2.4 python列表操作
- python數(shù)據(jù)分析與可視化教案2.6 python字典操作
- python數(shù)據(jù)分析與可視化教案2.1 python基本操作
- 科多大數(shù)據(jù)——數(shù)據(jù)分析python簡介
- python數(shù)據(jù)分析與可視化教案 6.5 工業(yè)數(shù)據(jù)分析與可視化
- python數(shù)據(jù)分析與可視化教案6.3 餐飲數(shù)據(jù)分析與可視化
- 基于python的數(shù)據(jù)分析系統(tǒng)的開發(fā)
- python數(shù)據(jù)分析與可視化教案3.6 數(shù)據(jù)的填充與替換
- 數(shù)據(jù)分析技術(shù)
- 數(shù)據(jù)分析方法實(shí)驗(yàn)
- 大數(shù)據(jù)分析方法
- 基于Python的數(shù)據(jù)分析系統(tǒng)的開發(fā)畢業(yè)設(shè)計(jì).docx
- 大數(shù)據(jù)環(huán)境下審計(jì)數(shù)據(jù)分析技術(shù)方法初探
- 企業(yè)數(shù)據(jù)分析系統(tǒng)開發(fā)——數(shù)據(jù)倉庫與數(shù)據(jù)挖掘技術(shù)方法研究.pdf
- 數(shù)據(jù)分析方法假設(shè)檢驗(yàn)
- fMRI數(shù)據(jù)分析方法研究.pdf
- 初識(shí)python-初中信息技術(shù)python編程(課件教案練習(xí))
- 土工實(shí)驗(yàn)數(shù)據(jù)分析方法探討
評(píng)論
0/150
提交評(píng)論