版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)分析理論與Python實(shí)戰(zhàn)第一章數(shù)據(jù)分析是什么目錄海量數(shù)據(jù)背后蘊(yùn)藏的知識(shí)數(shù)據(jù)分析與數(shù)據(jù)挖掘的關(guān)系機(jī)器學(xué)習(xí)與數(shù)據(jù)分析的關(guān)系數(shù)據(jù)分析的基本步驟Python和數(shù)據(jù)分析海量數(shù)據(jù)背后蘊(yùn)藏的知識(shí)數(shù)據(jù)蘊(yùn)含了大量知識(shí)規(guī)律可用于解釋當(dāng)前發(fā)生的事情預(yù)測(cè)未來(lái)的情況對(duì)象數(shù)據(jù)觀察現(xiàn)象歸納總結(jié)規(guī)律海量數(shù)據(jù)背后蘊(yùn)藏的知識(shí)數(shù)據(jù)分析的意義各行各業(yè)每天都在產(chǎn)生和收集大量數(shù)據(jù)2012年的微博日發(fā)量:4億條Twitter的信息量每年翻番增長(zhǎng)需要從海量數(shù)據(jù)中獲得有價(jià)值的信息輔助決策了解客戶(hù)偏好,設(shè)計(jì)受歡迎的產(chǎn)品制定合適價(jià)格,確保利潤(rùn)同時(shí)保證市場(chǎng)了解市場(chǎng)需求,調(diào)整生產(chǎn)計(jì)劃數(shù)據(jù)分析與數(shù)據(jù)挖掘的關(guān)系統(tǒng)計(jì)分析的含義在已定假設(shè)、先驗(yàn)約束上,對(duì)數(shù)據(jù)進(jìn)行整理、篩選和加工,并得到信息的過(guò)程數(shù)據(jù)挖掘的含義在數(shù)據(jù)分析得到信息的基礎(chǔ)上進(jìn)一步獲得認(rèn)知,轉(zhuǎn)為有效的預(yù)測(cè)和決策數(shù)據(jù)分析=統(tǒng)計(jì)分析+數(shù)據(jù)挖掘統(tǒng)計(jì)分析:數(shù)據(jù)預(yù)處理階段數(shù)據(jù)挖掘:知識(shí)發(fā)現(xiàn)階段數(shù)據(jù)信息統(tǒng)計(jì)分析數(shù)據(jù)挖掘知識(shí)機(jī)器學(xué)習(xí)與數(shù)據(jù)分析的關(guān)系機(jī)器學(xué)習(xí)的含義利用經(jīng)驗(yàn)來(lái)改善計(jì)算機(jī)系統(tǒng)自身的性能數(shù)據(jù)分析的含義識(shí)別出巨量數(shù)據(jù)中有效的、新穎的、潛在有用的、最終可理解的模式的非平凡過(guò)程,即從海量數(shù)據(jù)中找到有用的知識(shí)兩者之間的關(guān)系“經(jīng)驗(yàn)”在計(jì)算機(jī)系統(tǒng)中主要以數(shù)據(jù)形式存在,因此機(jī)器學(xué)習(xí)需要對(duì)數(shù)據(jù)進(jìn)行分析數(shù)據(jù)分析過(guò)程主要利用機(jī)器學(xué)習(xí)界提供的技術(shù)來(lái)分析海量數(shù)據(jù)數(shù)據(jù)分析的基本步驟數(shù)據(jù)收集數(shù)據(jù)預(yù)處理數(shù)據(jù)分析與知識(shí)發(fā)現(xiàn)數(shù)據(jù)后處理數(shù)據(jù)分析的基本步驟數(shù)據(jù)收集大數(shù)據(jù)時(shí)代的數(shù)據(jù)收集過(guò)程,得到的數(shù)據(jù)特點(diǎn)是大量、冗余、體量大但是信息量少如何從這樣的數(shù)據(jù)中提取出信息的過(guò)程是目前數(shù)據(jù)分析的重點(diǎn)和難點(diǎn)數(shù)據(jù)分析的基本步驟數(shù)據(jù)預(yù)處理將數(shù)據(jù)轉(zhuǎn)化為信息主要步驟包括對(duì)數(shù)據(jù)進(jìn)行初步的統(tǒng)計(jì)方面的分析,得到數(shù)據(jù)的基本檔案從數(shù)據(jù)的一致性、完整性、準(zhǔn)確性以及及時(shí)性四個(gè)方面進(jìn)行數(shù)據(jù)質(zhì)量分析根據(jù)發(fā)現(xiàn)的數(shù)據(jù)質(zhì)量的問(wèn)題對(duì)數(shù)據(jù)進(jìn)行清洗,包括缺失值處理、噪聲處理等對(duì)其進(jìn)行特征抽取為后續(xù)的數(shù)據(jù)分析工作做準(zhǔn)備數(shù)據(jù)分析的基本步驟數(shù)據(jù)分析與知識(shí)發(fā)現(xiàn)將預(yù)處理后的數(shù)據(jù)進(jìn)行進(jìn)一步的分析,完成信息到認(rèn)知的過(guò)程方法分類(lèi)有監(jiān)督學(xué)習(xí):分類(lèi)分析、關(guān)聯(lián)分析、回歸分析無(wú)監(jiān)督學(xué)習(xí):聚類(lèi)分析、異常檢測(cè)數(shù)據(jù)后處理主要包括提供數(shù)據(jù)給決策支撐系統(tǒng)、進(jìn)行數(shù)據(jù)可視化等方面Python和數(shù)據(jù)分析專(zhuān)用于實(shí)驗(yàn)性數(shù)據(jù)分析或者領(lǐng)域特定語(yǔ)言包括R語(yǔ)言MatlabSasSpssPython和數(shù)據(jù)分析Python語(yǔ)言相比上述語(yǔ)言的優(yōu)勢(shì)在于Python是面向生產(chǎn)的大部分?jǐn)?shù)據(jù)分析過(guò)程需要首先進(jìn)行實(shí)驗(yàn)性研究和原型構(gòu)建,再移植到生產(chǎn)系統(tǒng)中Python適用于原型構(gòu)建,且能夠直接將分析程序運(yùn)用到生產(chǎn)系統(tǒng)中上述語(yǔ)言無(wú)法直接用于生產(chǎn),需要使用C/C++等語(yǔ)言對(duì)算法再次進(jìn)行實(shí)現(xiàn)Python和數(shù)據(jù)分析Python語(yǔ)言相比上述語(yǔ)言的優(yōu)勢(shì)在于擁有強(qiáng)大的第三方庫(kù)支持Python的強(qiáng)大功能依賴(lài)于第三方庫(kù)實(shí)現(xiàn)常用數(shù)據(jù)分析庫(kù)包括Numpy、Scipy、Pandas、Scikit-learn、Matplotlib等Python的膠水語(yǔ)言特性Python語(yǔ)言的底層可以用C語(yǔ)言實(shí)現(xiàn),使用C語(yǔ)言實(shí)現(xiàn)的算法性能很高Numpy的底層使用C實(shí)現(xiàn),其效率比R語(yǔ)言更高數(shù)據(jù)分析理論與Python實(shí)戰(zhàn)第二章Python——從了解Python開(kāi)始目錄Python發(fā)展史Python及相關(guān)包的安裝Python基礎(chǔ)知識(shí)重要的Python庫(kù)JupyterPython發(fā)展史Python發(fā)展史Python版本進(jìn)化過(guò)程Python1.0添加諸多新特性,例如垃圾回收機(jī)制和對(duì)Unicode的支持去除冗余關(guān)鍵字,更加規(guī)范簡(jiǎn)潔Python2.0Python3.0Python及相關(guān)包的安裝Python的安裝Windows環(huán)境在官網(wǎng)下載相應(yīng)安裝程序進(jìn)行安裝Mac環(huán)境在官網(wǎng)下載相應(yīng)安裝程序進(jìn)行安裝使用homebrew進(jìn)行安裝Python及相關(guān)包的安裝相關(guān)包的安裝使用pip進(jìn)行安裝PandasScikit-learnMatplotlibPython及相關(guān)包的安裝使用科學(xué)計(jì)算發(fā)行版Python進(jìn)行快速安裝一般會(huì)包含一個(gè)標(biāo)準(zhǔn)版本的python和多個(gè)科學(xué)計(jì)算相關(guān)的包流行的科學(xué)計(jì)算發(fā)行版PythonAnacondaWinPythonPython基礎(chǔ)知識(shí)例:求斐波那契數(shù)列1:#Fibonaccisequence2:‘’’3:斐波那契數(shù)列4:輸入:項(xiàng)數(shù)n5:輸出:前n項(xiàng)6:‘’’7:importos8:9:deffibo(num):10:numbers=[1,1]11:foriinrange(num-2):12:numbers.append(numbers[i]+numbers[i+1])13:returnnumbers14:15:answer=fibo(10)16:print(answer)17:18:ifnotos.path.exists('result'):19:os.mkdir('result')20:21:file=open('result/fibo.txt','w')22:23:fornuminanswer:24:file.write(str(num)+'')25:26:file.close()單行注釋多行注釋引入包函數(shù)函數(shù)頭函數(shù)體函數(shù)調(diào)用調(diào)用os包中的函數(shù)Python基礎(chǔ)知識(shí)縮進(jìn)很重要縮進(jìn)符決定了程序的結(jié)構(gòu)ifnotos.path.exists('result'):os.mkdir('result')fornuminanswer:file.write(str(num)+'')deffibo(num):numbers=[1,1]foriinrange(num-2):numbers.append(numbers[i]+numbers[i+1])returnnumbers分支結(jié)構(gòu)中,分支體需要縮進(jìn)循環(huán)結(jié)構(gòu)中,循環(huán)體需要縮進(jìn)函數(shù)體需要縮進(jìn)Python基礎(chǔ)知識(shí)模塊化的系統(tǒng)Python擁有功能豐富的標(biāo)準(zhǔn)庫(kù)和強(qiáng)大的第三方庫(kù)支持標(biāo)準(zhǔn)庫(kù)os(提供操作系統(tǒng)各類(lèi)接口)time(提供對(duì)日期和時(shí)間的處理)第三方庫(kù)scipy(科學(xué)計(jì)算)scikit-learn(機(jī)器學(xué)習(xí)庫(kù))重要的Python庫(kù)Pandas構(gòu)建在Numpy之上的高性能數(shù)據(jù)分析庫(kù)對(duì)數(shù)據(jù)進(jìn)行排序、分組、歸并等操作和求和、求極值、求標(biāo)準(zhǔn)差、協(xié)方差矩陣計(jì)算等統(tǒng)計(jì)計(jì)算Scikit-learn構(gòu)建在Numpy、Scipy和matplotlib上的機(jī)器學(xué)習(xí)庫(kù)包括多種分類(lèi)、回歸、聚類(lèi)、降維、模型選擇和預(yù)處理算法與方法(例如支持向量機(jī)、最近鄰、樸素貝葉斯、LDA、特征選擇、k-means、主成分分析、網(wǎng)格搜索、特征提取等等)重要的Python庫(kù)Matplotlib一個(gè)繪圖庫(kù)可繪制直方圖、折線圖、餅圖、散點(diǎn)圖、函數(shù)圖像等2D、3D圖形,甚至是動(dòng)畫(huà)其他Numpy(科學(xué)計(jì)算庫(kù))Scipy(科學(xué)計(jì)算庫(kù))Scrapy(網(wǎng)絡(luò)爬蟲(chóng)庫(kù))NLTK(自然語(yǔ)言處理庫(kù))Statsmodels(統(tǒng)計(jì)學(xué)計(jì)算庫(kù))Jupyter交互式的數(shù)據(jù)科學(xué)與科學(xué)計(jì)算開(kāi)發(fā)環(huán)境支持Python、R、Scala等在內(nèi)的超過(guò)40多種編程語(yǔ)言Jupyternotebook基于web的python編輯器使用markdown語(yǔ)言將樣式豐富的文字添加到notebook中,實(shí)現(xiàn)代碼、運(yùn)行結(jié)果和文字的穿插展示Jupyter使用樣例數(shù)據(jù)分析理論與Python實(shí)戰(zhàn)第三章數(shù)據(jù)預(yù)處理——不了解數(shù)據(jù)一切都是空談目錄了解數(shù)據(jù)數(shù)據(jù)質(zhì)量評(píng)估數(shù)據(jù)清洗特征工程了解數(shù)據(jù)數(shù)據(jù)的分類(lèi)數(shù)據(jù)的特征了解數(shù)據(jù)——數(shù)據(jù)的分類(lèi)數(shù)據(jù)定量數(shù)據(jù)離散變量連續(xù)變量定性數(shù)據(jù)定序變量名義變量了解數(shù)據(jù)——數(shù)據(jù)的分類(lèi)定性數(shù)據(jù)定序變量:只對(duì)某些特性的“多少”進(jìn)行排序。例如對(duì)事物進(jìn)行評(píng)價(jià),將其分為“好”、“一般”、“不好”三個(gè)等級(jí),其等級(jí)之間沒(méi)有定量關(guān)系。名義變量:只測(cè)量某種特征的出現(xiàn)或者不出現(xiàn)。例如,性別“男”和“女”,兩者之間沒(méi)有任何關(guān)系,不能排序或者刻度化。了解數(shù)據(jù)——數(shù)據(jù)的特征集中趨勢(shì)主要測(cè)度:均值、中位數(shù)、眾數(shù)。對(duì)于定性數(shù)據(jù)而言,則這三個(gè)指標(biāo)所能提供的信息很少。對(duì)于定序變量,均值無(wú)意義,中位數(shù)和眾數(shù)能反映一定的含義;對(duì)于名義變量,均值和中位數(shù)均無(wú)意義,僅眾數(shù)有一定的含義,但仍需注意,眾數(shù)僅代表對(duì)應(yīng)的特征出現(xiàn)的最多,但不能代表該特征占多數(shù)。其中,特別的是,對(duì)于名義變量的二分變量,如果有合適的取值,均值就可以進(jìn)行有意義的解釋。了解數(shù)據(jù)——數(shù)據(jù)的特征離散程度常見(jiàn)的測(cè)度有極差、方差和標(biāo)準(zhǔn)差,另外,還有四分位距、平均差和變異系數(shù)等。定量數(shù)據(jù)極差代表數(shù)據(jù)所處范圍的大小,方差、標(biāo)準(zhǔn)差和平均差等代表數(shù)據(jù)相對(duì)均值的偏離情況,但是方差、標(biāo)準(zhǔn)差和平均差等都是數(shù)值的絕對(duì)量,無(wú)法規(guī)避數(shù)值度量單位的影響,變異系數(shù)為了修正這個(gè)弊端,使用標(biāo)準(zhǔn)差除以均值得到的一個(gè)相對(duì)量來(lái)反映數(shù)據(jù)集的變異情況或者離散程度。定性數(shù)據(jù)極差代表取值類(lèi)別,相比定量數(shù)據(jù),定性數(shù)據(jù)的極差所表達(dá)的含義很有限,剩余的離散程度的測(cè)度對(duì)于定性數(shù)據(jù)的含義不大,尤其是名義變量。了解數(shù)據(jù)——數(shù)據(jù)的特征相關(guān)性測(cè)量
數(shù)據(jù)可視化處理通過(guò)折線圖或者散點(diǎn)圖,做圖表相關(guān)分析,可以對(duì)相關(guān)關(guān)系有一個(gè)初步的探索和認(rèn)識(shí)。計(jì)算變量間的協(xié)方差可以確定相關(guān)關(guān)系的正負(fù),沒(méi)有任何關(guān)于關(guān)系強(qiáng)度的信息,如果變量的測(cè)量單位發(fā)生變化,這一統(tǒng)計(jì)量的值就會(huì)發(fā)生變化,但是實(shí)際變量間的相關(guān)關(guān)系并沒(méi)有發(fā)生變化。計(jì)算變量間的相關(guān)系數(shù)相關(guān)系數(shù)則是一個(gè)不受測(cè)量單位影響的相關(guān)關(guān)系統(tǒng)計(jì)量,理論上限是+1(或-1),表示完全線性相關(guān)。進(jìn)行一元回歸或多元回歸分析了解數(shù)據(jù)——數(shù)據(jù)的特征數(shù)據(jù)缺失
將數(shù)據(jù)集中不含缺失值的變量稱(chēng)為完全變量,含有缺失值的變量稱(chēng)為不完全變量。產(chǎn)生缺失值的原因:數(shù)據(jù)本身被遺漏,由于數(shù)據(jù)采集設(shè)備的故障、存儲(chǔ)介質(zhì)的故障、傳輸媒體的故障、一些人為因素等原因而丟失了;某些對(duì)象的的一些屬性或者特征是不存在的,所以導(dǎo)致空缺;某些信息被認(rèn)為不重要,與給定環(huán)境無(wú)關(guān),所以被數(shù)據(jù)庫(kù)設(shè)計(jì)者或者信息采集者忽略。噪聲噪聲是指被觀測(cè)的變量的隨機(jī)誤差或方差。用數(shù)學(xué)形式表示為:觀測(cè)量(Measurement)=真實(shí)數(shù)據(jù)(TrueData)+噪聲(Noise)離群點(diǎn)數(shù)據(jù)集中包含這樣一些數(shù)據(jù)對(duì)象,它們與數(shù)據(jù)的一般行為或模型不一致,這樣的對(duì)象被稱(chēng)為離群點(diǎn)。離群點(diǎn)屬于觀測(cè)值數(shù)據(jù)質(zhì)量數(shù)據(jù)分析結(jié)果的有效性和準(zhǔn)確性的前提保障。從哪些方面評(píng)估數(shù)據(jù)質(zhì)量則是數(shù)據(jù)分析需要考慮的問(wèn)題,典型的數(shù)據(jù)質(zhì)量標(biāo)準(zhǔn)評(píng)估有四個(gè)要素:完整性一致性準(zhǔn)確性及時(shí)性數(shù)據(jù)質(zhì)量——完整性完整性數(shù)據(jù)信息是否存在缺失的狀況,數(shù)據(jù)缺失的情況可能是整個(gè)數(shù)據(jù)記錄缺失,也可能是數(shù)據(jù)中某個(gè)字段信息的記錄缺失。不完整的數(shù)據(jù)所能借鑒的價(jià)值就會(huì)大大降低,也是數(shù)據(jù)質(zhì)量最為基礎(chǔ)的一項(xiàng)評(píng)估標(biāo)準(zhǔn)一般使用統(tǒng)計(jì)的記錄數(shù)和唯一值個(gè)數(shù)統(tǒng)計(jì)記錄的完整性。網(wǎng)站日志日訪問(wèn)量就是一個(gè)記錄值,平時(shí)的日訪問(wèn)量在1000左右,突然某一天降到100了,需要檢查一下數(shù)據(jù)是否存在缺失了。再例如,網(wǎng)站統(tǒng)計(jì)地域分布情況的每一個(gè)地區(qū)名就是一個(gè)唯一值,我國(guó)包括了32個(gè)省和直轄市,如果統(tǒng)計(jì)得到的唯一值小于32,則可以判斷數(shù)據(jù)有可能存在缺失
可以使用統(tǒng)計(jì)信息中的空值(NULL)的個(gè)數(shù)進(jìn)行審核記錄中某個(gè)字段的數(shù)據(jù)缺失數(shù)據(jù)質(zhì)量——一致性一致性一致性是指數(shù)據(jù)是否合乎規(guī)范,數(shù)據(jù)集合內(nèi)的數(shù)據(jù)是否保持了統(tǒng)一的格式數(shù)據(jù)質(zhì)量的一致性主要體現(xiàn)在數(shù)據(jù)記錄的規(guī)范和數(shù)據(jù)是否符合邏輯。數(shù)據(jù)記錄的規(guī)范:主要是數(shù)據(jù)編碼和格式,一項(xiàng)數(shù)據(jù)存在它特定的格式,例如手機(jī)號(hào)碼一定是13位的數(shù)字,IP地址一定是由4個(gè)0到255間的數(shù)字加上”.”組成的,或者一些預(yù)先定義的數(shù)據(jù)約束,比如完整性的非空約束、唯一值約束等。數(shù)據(jù)是否符合邏輯:指多項(xiàng)數(shù)據(jù)間存在著固定的邏輯關(guān)系以及一些預(yù)先定義的數(shù)據(jù)約束,例如PV一定是大于等于UV的,跳出率一定是在0到1之間的。數(shù)據(jù)的一致性審核是數(shù)據(jù)質(zhì)量審核中比較重要也是比較復(fù)雜的一塊
數(shù)據(jù)質(zhì)量——準(zhǔn)確性準(zhǔn)確性準(zhǔn)確性是指數(shù)據(jù)記錄的信息是否存在異?;蝈e(cuò)誤。準(zhǔn)確性關(guān)注數(shù)據(jù)中的錯(cuò)誤,例如:最為常見(jiàn)的數(shù)據(jù)準(zhǔn)確性錯(cuò)誤就如亂碼。異常的大或者小的數(shù)據(jù)以及不符合有效性要求的數(shù)值如訪問(wèn)量Visits一定是整數(shù)、年齡一般在1-100之間、轉(zhuǎn)化率一定是介于0到1的值等數(shù)據(jù)的準(zhǔn)確性可能存在于個(gè)別記錄,也可能存在于整個(gè)數(shù)據(jù)集整個(gè)數(shù)據(jù)集的某個(gè)字段的數(shù)據(jù)存在錯(cuò)誤,比如常見(jiàn)的數(shù)量級(jí)的記錄錯(cuò)誤,這種錯(cuò)誤很容易發(fā)現(xiàn),利用DataProfiling的平均數(shù)和中位數(shù)也可以發(fā)現(xiàn)這類(lèi)問(wèn)題。當(dāng)數(shù)據(jù)集中存在個(gè)別的異常值時(shí),可以使用最大值和最小值的統(tǒng)計(jì)量去審核,或者使用箱線圖也可以讓異常記錄一目了然數(shù)據(jù)質(zhì)量——及時(shí)性及時(shí)性及時(shí)性是指數(shù)據(jù)從產(chǎn)生到可以查看的時(shí)間間隔,也叫數(shù)據(jù)的延時(shí)時(shí)長(zhǎng)。及時(shí)性對(duì)于數(shù)據(jù)分析本身要求并不高,但如果數(shù)據(jù)分析周期加上數(shù)據(jù)建立的時(shí)間過(guò)長(zhǎng),就可能導(dǎo)致分析得出的結(jié)論失去了借鑒意義數(shù)據(jù)清洗數(shù)據(jù)清洗的主要目的是對(duì)缺失值、噪聲數(shù)據(jù)、不一致數(shù)據(jù)、異常數(shù)據(jù)進(jìn)行處理,是對(duì)上述數(shù)據(jù)質(zhì)量分析時(shí)發(fā)現(xiàn)的問(wèn)題進(jìn)行處理,使得清理后的數(shù)據(jù)格式符合標(biāo)準(zhǔn),不存在異常數(shù)據(jù)等缺失值處理噪聲數(shù)據(jù)處理不一致數(shù)據(jù)的處理異常數(shù)據(jù)的處理數(shù)據(jù)清洗——缺失值處理對(duì)于缺失值,處理方法有如下幾種:忽略:最簡(jiǎn)單的方式是忽略有缺失值的數(shù)據(jù)。如果某條數(shù)據(jù)記錄存在缺失項(xiàng),就刪除該條記錄,如果某個(gè)屬性列缺失值過(guò)多,則在整個(gè)數(shù)據(jù)集中刪除該屬性,但有可能因此損失大量數(shù)據(jù)。缺失值填補(bǔ):可以填補(bǔ)某一固定值、平均值、或者根據(jù)記錄填充最有可能值,最有可能值的確定可能會(huì)利用決策樹(shù)、回歸分析等。數(shù)據(jù)清洗——噪聲數(shù)據(jù)處理
分箱技術(shù)通過(guò)考察相鄰數(shù)據(jù)來(lái)確定最終值,可以實(shí)現(xiàn)異?;蛘咴肼晹?shù)據(jù)的平滑處理?;舅枷胧前凑諏傩灾祫澐肿訁^(qū)間,如果屬性值屬于某個(gè)子區(qū)間,就稱(chēng)將其放入該子區(qū)間對(duì)應(yīng)“箱子”內(nèi),即為分箱操作。箱的深度表示箱中所含數(shù)據(jù)記錄條數(shù),寬度則是對(duì)應(yīng)屬性值的取值范圍。聚類(lèi)技術(shù)將數(shù)據(jù)集合分組為由類(lèi)似的數(shù)據(jù)組成的多個(gè)簇(或稱(chēng)為類(lèi))。聚類(lèi)技術(shù)主要用于找出并清除那些落在簇之外的值(孤立點(diǎn))?;貧w技術(shù)回歸技術(shù)是通過(guò)發(fā)現(xiàn)兩個(gè)相關(guān)的變量之間的關(guān)系,尋找適合的兩個(gè)變量之間的映射關(guān)系來(lái)平滑數(shù)據(jù),即通過(guò)建立數(shù)學(xué)模型來(lái)預(yù)測(cè)下一個(gè)數(shù)值,包括線性回歸和非線性回歸。數(shù)據(jù)清洗——不一致數(shù)據(jù)的處理
對(duì)于數(shù)據(jù)質(zhì)量中提到的數(shù)據(jù)不一致性問(wèn)題,則需要根據(jù)實(shí)際情況來(lái)給出處理方案??梢允褂孟嚓P(guān)材料來(lái)人工修復(fù),違反給定規(guī)則的數(shù)據(jù)可以用知識(shí)工程的工具進(jìn)行修改。對(duì)于多個(gè)數(shù)據(jù)源集成處理時(shí),不同數(shù)據(jù)源對(duì)某些含義相同的字段的編碼規(guī)則會(huì)存在差異,此時(shí)則需要對(duì)不同數(shù)據(jù)源的數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)化。數(shù)據(jù)清洗——異常數(shù)據(jù)的處理不可還原異常異常數(shù)據(jù)大部分情況很難修正,比如字符編碼等問(wèn)題引起的亂碼,字符被截?cái)?,異常的?shù)值等,這些異常數(shù)據(jù)如果沒(méi)有規(guī)律可循幾乎不可能被還原,只能將其直接過(guò)濾。可還原異常原字符中參雜了一些其他的無(wú)用字符,可以使用取子串的方法,用trim函數(shù)可以去掉字符串前后的空格等;字符被截?cái)嗟那闆r如果可以使用截?cái)嗪笞址茖?dǎo)出原完整字符串,那么也可以被還原。數(shù)值記錄中存在異常大或者異常小的值是可以分析是否數(shù)值單位差異引起的,比如克和千克差了1000倍,這樣的數(shù)值的異??梢酝ㄟ^(guò)轉(zhuǎn)化進(jìn)行處理特征工程在很多應(yīng)用中,所采集的原始數(shù)據(jù)維數(shù)很高,這些經(jīng)過(guò)數(shù)據(jù)清洗后的數(shù)據(jù)成為原始特征,但并不是所有的原始特征都對(duì)于后續(xù)的分析可以直接提供信息,有些需要經(jīng)過(guò)一些處理,有些甚至是干擾項(xiàng)。特征工程是利用領(lǐng)域知識(shí)來(lái)處理數(shù)據(jù)創(chuàng)建一些特征,以便后續(xù)分析使用。目的是能夠用盡量少的特征描述原始數(shù)據(jù),同時(shí)保持原始數(shù)據(jù)與分析目的相關(guān)的特性特征選擇特征構(gòu)建特征提取特征工程-特征選擇特征選擇的原則特征是否發(fā)散:如果一個(gè)特征不發(fā)散,例如方差接近于0,也就是說(shuō)樣本在這個(gè)特征上基本上沒(méi)有差異,這個(gè)特征對(duì)于樣本的區(qū)分并沒(méi)有什么用。特征是否與分析結(jié)果相關(guān):相關(guān)特征是指其取值能夠改變分析結(jié)果。顯然,與目標(biāo)相關(guān)性高的特征,應(yīng)當(dāng)優(yōu)選選擇。特征信息是否冗余:特征中可能存在一些冗余特征,即兩個(gè)特征本質(zhì)上相同,也可以表示為兩個(gè)特征的相關(guān)性比較高。特征工程-特征選擇特征選擇的方法Filter(過(guò)濾法):按照發(fā)散性或者相關(guān)性對(duì)各個(gè)特征進(jìn)行評(píng)分,設(shè)定閾值或者待選擇閾值的個(gè)數(shù),選擇特征。Wrapper(包裝法):根據(jù)目標(biāo)函數(shù)(通常是預(yù)測(cè)效果評(píng)分),每次選擇若干特征,或者排除若干特征。Embedded(集成法):先使用某些機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個(gè)特征的權(quán)值系數(shù),根據(jù)系數(shù)從大到小選擇特征。類(lèi)似于Filter方法,但是是通過(guò)訓(xùn)練來(lái)確定特征的優(yōu)劣特征工程-特征構(gòu)建特征構(gòu)建是指從原始特征中人工構(gòu)建新的特征。特征構(gòu)建需要很強(qiáng)的洞察力和分析能力,要求我們能夠從原始數(shù)據(jù)中找出一些具有物理意義的特征。假設(shè)原始數(shù)據(jù)是表格數(shù)據(jù),可以使用混合屬性或者組合屬性來(lái)創(chuàng)建新的特征,或是分解或切分原有的特征來(lái)創(chuàng)建新的特征。特征工程-特征提取特征提取是在原始特征的基礎(chǔ)上,自動(dòng)構(gòu)建新的特征,將原始特征轉(zhuǎn)換為一組更具物理意義、統(tǒng)計(jì)意義或者核的特征。方法包括主成分分析、獨(dú)立成分分析和線性判別分析。PCA(PrincipalComponentAnalysis,主成分分析):PCA的思想是通過(guò)坐標(biāo)軸轉(zhuǎn)換,尋找數(shù)據(jù)分布的最優(yōu)子空間,從而達(dá)到降維、去除數(shù)據(jù)間相關(guān)性的目的。ICA(IndependentComponentAnalysis,獨(dú)立成分分析):PCA特征轉(zhuǎn)換降維,提取的是不相關(guān)的部分,ICA獨(dú)立成分分析,獲得的是相互獨(dú)立的屬性LDA(LinearDiscriminantAnalysis,線性判別分析):LDA的原理是將帶上標(biāo)簽的數(shù)據(jù)(點(diǎn)),通過(guò)投影的方法,投影到維度更低的空間,使得投影后的點(diǎn),會(huì)形成按類(lèi)別區(qū)分,相同類(lèi)別的點(diǎn),將會(huì)在投影后更接近,不同類(lèi)別的點(diǎn)距離越遠(yuǎn)。數(shù)據(jù)分析理論與Python實(shí)戰(zhàn)第四章Numpy——數(shù)據(jù)分析基礎(chǔ)工具
目錄Numpy介紹Numpy的數(shù)組對(duì)象-ndarrayndarray的索引、切片和迭代
ndarray的基礎(chǔ)操作Numpy介紹NumPy是Python處理數(shù)組和矢量運(yùn)算的工具包,是進(jìn)行高性能計(jì)算和數(shù)據(jù)分析的基礎(chǔ),是Pandas、Skit-learn和Matplotlib的基礎(chǔ)。NumPy提供了對(duì)數(shù)組進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù),并且提供了簡(jiǎn)單易用的面向C的API。NumPy對(duì)于矢量運(yùn)算不僅提供了很多方便的接口,而且比自己手動(dòng)用基礎(chǔ)的Python實(shí)現(xiàn)數(shù)組運(yùn)算速度要快。Numpy的數(shù)組對(duì)象-ndarray對(duì)象保存同一類(lèi)型的數(shù)據(jù),訪問(wèn)方式類(lèi)似于list,通過(guò)整數(shù)下標(biāo)進(jìn)行索引。重要的描述對(duì)象特征的屬性:ndarray對(duì)象的屬性說(shuō)明shape返回一個(gè)元組,用于表示ndarray各個(gè)維度的長(zhǎng)度,元組的長(zhǎng)度為數(shù)組的維度(與ndim相同),元組的每個(gè)元素的值代表了ndarray每個(gè)維度的長(zhǎng)度ndimndarray對(duì)象的維度sizendarray中元素的個(gè)數(shù),相當(dāng)于各個(gè)維度長(zhǎng)度的乘積dtypendarray中存儲(chǔ)的元素的數(shù)據(jù)類(lèi)型istemsizendarray中每個(gè)元素的字節(jié)數(shù)Numpy的數(shù)組對(duì)象-ndarrayndarray的創(chuàng)建方法:函數(shù)名稱(chēng)說(shuō)明array將輸入的序列類(lèi)型數(shù)據(jù)(list、tuple、ndarray等)轉(zhuǎn)換為ndarray,返回一個(gè)新的ndarray對(duì)象asarray將輸入的序列類(lèi)型數(shù)據(jù)(list、tuple等)轉(zhuǎn)換為ndarray,返回一個(gè)新的ndarray對(duì)象,但當(dāng)輸入數(shù)據(jù)是ndarray類(lèi)型類(lèi)型時(shí),則不會(huì)生成新的ndarray對(duì)象arange根據(jù)輸入的參數(shù),返回等間隔的ndarray,如Code4-5所示,第一行輸入和第二行輸入返回的ndarray是相同的,默認(rèn)從0開(kāi)始,間隔為1,可以自己指定區(qū)間和間隔ones指定shape,創(chuàng)建全1數(shù)組ones_like以另一個(gè)ndarray的shape為指定shape,創(chuàng)建全1數(shù)組zeros指定shape,創(chuàng)建全0數(shù)組zeros_like以另一個(gè)ndarray的shape為指定shape,創(chuàng)建全0數(shù)組empty指定shape,創(chuàng)建新數(shù)組,但只分配空間不填充值,默認(rèn)的dtype為float64empty_like以另一個(gè)ndarray的shape為指定shape,創(chuàng)建新數(shù)組,但只分配空間不填充值,默認(rèn)的dtype為float64eye,identity創(chuàng)建n*n的單位矩陣,對(duì)角線為1,其余為0Numpy的數(shù)組對(duì)象-ndarrayndarray的數(shù)據(jù)類(lèi)型:數(shù)據(jù)類(lèi)型類(lèi)型命名說(shuō)明整數(shù)int8(i1)、unit8(u1);int16(i2)、uint16(u2);int32(i4)、uint32(u4);int64(i8)、uint64(u8)有符號(hào)和無(wú)符號(hào)的8位、16位、32位、64位整數(shù)浮點(diǎn)數(shù)float16(f2)、float32(f4或f)、float64(f8或d)、float128(f16或g)float16為半精度浮點(diǎn)數(shù),存儲(chǔ)空間為16位2字節(jié);float32為單精度浮點(diǎn)數(shù),存儲(chǔ)空間為32位4字節(jié),與C語(yǔ)言的float兼容;float64為雙精度浮點(diǎn)數(shù),存儲(chǔ)空間為64位8字節(jié),與C語(yǔ)言的double及Python的float對(duì)象兼容;float128為擴(kuò)展精度浮點(diǎn)數(shù),存儲(chǔ)空間為128位16字節(jié)。復(fù)數(shù)complex64(c8)、complex128(c16)、complex256(c32)兩個(gè)浮點(diǎn)數(shù)表示的復(fù)數(shù)。complex64使用兩個(gè)32位浮點(diǎn)數(shù)表示;complex128使用兩個(gè)64位浮點(diǎn)數(shù)表示;complex256使用兩個(gè)128位浮點(diǎn)數(shù)表示,布爾數(shù)bool布爾類(lèi)型,存儲(chǔ)True和False,字節(jié)長(zhǎng)度為1Python對(duì)象OPython對(duì)象類(lèi)型字符串S10U10S為固定長(zhǎng)度的字符串類(lèi)型,每個(gè)字符的字節(jié)長(zhǎng)度為1,S后跟隨的數(shù)字表示要?jiǎng)?chuàng)建的字符串的長(zhǎng)度;unicode_為固定長(zhǎng)度的unicode類(lèi)型,每個(gè)字符的字節(jié)長(zhǎng)度,U后跟隨的數(shù)字表示要?jiǎng)?chuàng)建的字符串的長(zhǎng)度ndarray的索引、切片和迭代索引操作多維的ndarray則可以在每一個(gè)維度有一個(gè)索引,每個(gè)索引可以是數(shù)值、數(shù)值的list、切片或者布爾類(lèi)型的list。在多維的ndarray中,可以對(duì)各個(gè)元素進(jìn)行遞歸訪問(wèn),也可以傳入一個(gè)逗號(hào)隔開(kāi)的列表來(lái)選取單個(gè)索引arr[2][1][0]
arr[2,1,0]若只是指定第一個(gè)維度的值,得到的ndarray少了一個(gè)維度,但是shape與原來(lái)的ndarray后兩個(gè)維度一致ndarray的索引、切片和迭代切片操作可以通過(guò)索引獲得ndarray的一個(gè)切片與Python的list不同的是,我們獲得的切片是原始ndarray的視圖,所以對(duì)于切片的修改即對(duì)原始ndarray的修改。arr[2:5]
ndarray的索引、切片和迭代迭代操作一維數(shù)組則是與Python的list相同多維數(shù)組的迭代則是針對(duì)第一個(gè)維度進(jìn)行迭代可以通過(guò)ndarray的flat屬性實(shí)現(xiàn)對(duì)ndarray每個(gè)元素的迭代
ndarray的基礎(chǔ)操作廣播方式的操作對(duì)于一些用于標(biāo)量的算術(shù)運(yùn)算,NumPy可以通過(guò)廣播的方式將其作用到ndarray的每個(gè)元素上,返回一個(gè)或者多個(gè)新的矢量。例如,對(duì)一個(gè)ndarray對(duì)象進(jìn)行加一個(gè)標(biāo)量的運(yùn)算,會(huì)對(duì)ndarray對(duì)象的每一個(gè)元素進(jìn)行與標(biāo)量相加的操作,得到一個(gè)新的ndarray并返回。元素級(jí)別的操作同樣可以通過(guò)通用函數(shù)(ufunc)對(duì)ndarray中的數(shù)據(jù)進(jìn)行元素級(jí)的操作,是對(duì)一些本來(lái)運(yùn)用于一個(gè)或者多個(gè)標(biāo)量的操作,運(yùn)用在一個(gè)或者多個(gè)矢量的每一個(gè)元素(即一個(gè)標(biāo)量)上,得到一組結(jié)果,返回一個(gè)或者多個(gè)新的矢量(多個(gè)的情況比較少見(jiàn))。通用函數(shù)有一元操作操作和二元操作。數(shù)據(jù)分析理論與Python實(shí)戰(zhàn)第五章Pandas——處理結(jié)構(gòu)化數(shù)據(jù)目錄Pandas介紹基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)基于Pandas的Index對(duì)象的訪問(wèn)操作
數(shù)學(xué)統(tǒng)計(jì)和計(jì)算工具
數(shù)學(xué)聚合和分組運(yùn)算Pandas介紹Pandas是Python的一個(gè)開(kāi)源工具包,為Python提供了高性能、簡(jiǎn)單易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。Pandas提供了方便的類(lèi)表格的統(tǒng)計(jì)操作和類(lèi)SQL操作,使之可以方便的做一些數(shù)據(jù)預(yù)處理工作。同時(shí)提供了強(qiáng)大的缺失值處理等,使預(yù)處理工作更加便捷。了解Pandas可以完成什么事情:索引對(duì)象:包括簡(jiǎn)單的索引和多層次的索引引擎集成組合:用于匯總和轉(zhuǎn)換數(shù)據(jù)集合日期范圍生成器以及自定義日期偏移(實(shí)現(xiàn)自定義頻率)輸入工具和輸出工具:從各種格式的文件中(CSV,delimited,Excel2003)加載表格數(shù)據(jù),以及從快速高效的PyTables/HDF5格式中保存和加載Pandas對(duì)象。標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)的“稀疏”形式:可以用于存儲(chǔ)大量缺失或者大量一致的數(shù)據(jù)。移動(dòng)窗口統(tǒng)計(jì)(滾動(dòng)平均值,滾動(dòng)標(biāo)準(zhǔn)偏差等)?;A(chǔ)數(shù)據(jù)結(jié)構(gòu)——Series
Series是Pandas中重要的數(shù)據(jù)結(jié)構(gòu),類(lèi)似于一維數(shù)組與字典的結(jié)合。Series可以理解為一個(gè)定長(zhǎng)、有序的“字典”結(jié)構(gòu),一些需要“字典”結(jié)構(gòu)的地方也可以使用Series。是一個(gè)有標(biāo)簽的一維數(shù)組,同時(shí)標(biāo)簽在Pandas中有對(duì)應(yīng)的數(shù)據(jù)類(lèi)型“index”
。Series的創(chuàng)建
通過(guò)list創(chuàng)建通過(guò)NumPy的ndarray創(chuàng)建通過(guò)dict創(chuàng)建通過(guò)標(biāo)量創(chuàng)建基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)——Series
Series的訪問(wèn)
可以iloc函數(shù)和loc函數(shù)對(duì)Series進(jìn)行訪問(wèn)可以直接通過(guò)類(lèi)似數(shù)組和類(lèi)似屬性的方式對(duì)其進(jìn)行訪問(wèn)
Series的操作在進(jìn)行數(shù)據(jù)分析工作時(shí),通常像數(shù)組一樣對(duì)Series進(jìn)行循環(huán)的每個(gè)值的操作是沒(méi)有必要的。NumPy對(duì)ndarray可以進(jìn)行的操作對(duì)Series同樣可以進(jìn)行。同時(shí)由于索引的存在,在操作時(shí)存在數(shù)組對(duì)齊的問(wèn)題基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)——Dataframe
DataFrame是有標(biāo)簽的二維數(shù)組,類(lèi)似于一個(gè)表格或者SQL中的table,或者是一個(gè)Series對(duì)象的dict,是Pandas中最常用的數(shù)據(jù)結(jié)構(gòu)。DataFrame分為行索引(index)和列索引(columns)。DataFrame的創(chuàng)建
輸入:包括值為一維ndarray,list,dict或者Series的dict;二維的ndarray;一個(gè)Series;其他的DataFrame等。索引:在創(chuàng)建DataFrame時(shí),行索引和列索引可以通過(guò)index和columns參數(shù)指定,若沒(méi)有明確給出,則會(huì)有默認(rèn)值,默認(rèn)值為從0開(kāi)始的連續(xù)數(shù)字。對(duì)于通過(guò)Series的dict創(chuàng)建DataFrame的情況,若指定index,則會(huì)丟棄所有未和指定index匹配的數(shù)據(jù)
基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)——Dataframe
DataFrame的訪問(wèn)
作為一個(gè)類(lèi)似表格的數(shù)據(jù)類(lèi)型,DataFrame的訪問(wèn)方式有多種,可以通過(guò)列索引,也可以通過(guò)行索引,具體說(shuō)明在訪問(wèn)操作中給出通過(guò)loc對(duì)DataFrame進(jìn)行基于行索引標(biāo)簽的訪問(wèn)直接通過(guò)列索引的標(biāo)簽對(duì)DataFrame進(jìn)行訪問(wèn)通過(guò)iloc函數(shù)基于行索引的位置進(jìn)行訪問(wèn)DataFrame的操作DataFrame本身可以進(jìn)行很多算術(shù)操作,包括加減乘除,轉(zhuǎn)置,NumPy對(duì)矩陣可以進(jìn)行的一系列操作的函數(shù)都可以運(yùn)用于DataFrame,但是要注意數(shù)據(jù)對(duì)齊問(wèn)題可以進(jìn)行增刪改查的操作基于Pandas的Index對(duì)象的訪問(wèn)操作Pandas的Index對(duì)象Series中的index屬性DataFrame中的index屬性和columns屬性Index對(duì)象的特征不可修改、有序及可切片的Index對(duì)象的類(lèi)型Index:最泛化的Index類(lèi)型,可以理解為其他類(lèi)型的父類(lèi),將軸標(biāo)簽表示為一個(gè)由Python對(duì)象組成的NumPy數(shù)組;Int64Index則是針對(duì)整數(shù)的;MultiIndex針對(duì)多層索引;DatetimeIndex則存儲(chǔ)時(shí)間戳;PeriodIndex針對(duì)時(shí)間間隔數(shù)據(jù)?;赑andas的Index對(duì)象的訪問(wèn)操作Index對(duì)象的基本操作函數(shù)說(shuō)明delete刪除索引i處的元素,返回新的Index對(duì)象(可以傳入索引的數(shù)組)drop刪除傳入的元素e,返回新的Index對(duì)象(可以傳入元素的數(shù)組)insert將元素插入索引i處,返回新的Index對(duì)象append連接另一個(gè)Index對(duì)象,返回新的Index對(duì)象union與另一個(gè)Index對(duì)象進(jìn)行并操作,返回兩者的并集difference與另一個(gè)Index對(duì)象進(jìn)行差操作,返回兩者的差集Intersection與另一個(gè)Index對(duì)象進(jìn)行交操作,返回兩者的交集isin判斷Index對(duì)象中每個(gè)元素是否在參數(shù)所給的數(shù)組類(lèi)型對(duì)象中,返回一個(gè)與Index對(duì)象長(zhǎng)度相同的Bool數(shù)組is_monotonic當(dāng)每個(gè)元素都大于前一個(gè)元素時(shí),返回Trueis_unique當(dāng)Index對(duì)象中沒(méi)有重復(fù)值時(shí),返回Trueunique返回沒(méi)有重復(fù)數(shù)據(jù)的Index對(duì)象基于Pandas的Index對(duì)象的訪問(wèn)操作索引的不同訪問(wèn)方式loc方式Pandas的loc函數(shù)的輸入主要關(guān)注index的label,篩選條件與label相關(guān),接收index的label作為參數(shù)輸入。包括單個(gè)的label,label的數(shù)組或者label的分片(slice)表達(dá)形式;可以接收一個(gè)布爾數(shù)組作為參數(shù)輸入;可以接收參數(shù)為調(diào)用loc函數(shù)的對(duì)象(Series或者DataFrame類(lèi)型)的回調(diào)函數(shù)作為參數(shù)輸入。iloc方式而iloc函數(shù)與loc函數(shù)不同,關(guān)注的則是index的position。index的position作為參數(shù)輸入,包括表示position的單個(gè)整數(shù),position的數(shù)組或者position的分片(slice)表達(dá)形式;可以接收一個(gè)布爾數(shù)組作為參數(shù)輸入;可以接收參數(shù)為調(diào)用loc函數(shù)的對(duì)象(Series或者DataFrame類(lèi)型)的回調(diào)函數(shù)作為參數(shù)輸入?;赑andas的Index對(duì)象的訪問(wèn)操作索引的不同訪問(wèn)方式類(lèi)似dict方式的訪問(wèn)可以將Seires和DataFrame看作一個(gè)dict,而DataFrame相當(dāng)于每一個(gè)元素是Series的dict,所以可以用類(lèi)似dict訪問(wèn)的方式來(lái)訪問(wèn)Series和DataFrame。類(lèi)似屬性方式的訪問(wèn)接受參數(shù)類(lèi)型包括單個(gè)變量,數(shù)組形式(list或者NumPy的ndarray),布爾數(shù)組或者回調(diào)函數(shù)?;赑andas的Index對(duì)象的訪問(wèn)操作調(diào)用方式間的區(qū)別loc函數(shù)和iloc函數(shù)的區(qū)別loc函數(shù)和iloc函數(shù)都是對(duì)index的訪問(wèn)(Series的index和DataFrame的index),對(duì)于DataFrame也可以實(shí)現(xiàn)對(duì)于某個(gè)index下的某個(gè)column的訪問(wèn)。接收的數(shù)據(jù)類(lèi)型相同但是含義不同,loc函數(shù)接收Index對(duì)象(index和columns)的label,而iloc函數(shù)接收Index對(duì)象(index和columns)的position。通過(guò)loc訪問(wèn)和通過(guò)[]訪問(wèn)的區(qū)別loc函數(shù)和[]都是接收Index對(duì)象(index和columns)的label作為參數(shù),但是loc函數(shù)是對(duì)index的訪問(wèn)(Series的index和DataFrame的index),[]在DataFrame中則是對(duì)columns的訪問(wèn),在Series中無(wú)差別?;赑andas的Index對(duì)象的訪問(wèn)操作特殊的輸入類(lèi)型輸入為布爾類(lèi)型數(shù)組使用布爾類(lèi)型數(shù)組作為輸入?yún)?shù)也是常見(jiàn)的操作之一,可用的運(yùn)算符包括:|(表示或運(yùn)算),&(表示與運(yùn)算)以及~(表示非運(yùn)算),但注意要使用圓括號(hào)來(lái)組合。輸入為回調(diào)函數(shù)loc,iloc和[]都接收回調(diào)函數(shù)作為輸入來(lái)進(jìn)行訪問(wèn),這個(gè)回調(diào)函數(shù)必須是以被訪問(wèn)的Series或者DataFrame作為參數(shù)
數(shù)學(xué)統(tǒng)計(jì)和計(jì)算工具
統(tǒng)計(jì)函數(shù):協(xié)方差、相關(guān)系數(shù)、排序。Pandas提供了一系列統(tǒng)計(jì)函數(shù)接口,方便用戶(hù)直接進(jìn)行統(tǒng)計(jì)運(yùn)算。包括協(xié)方差、相關(guān)系數(shù)、排序等。Pandas提供了兩個(gè)Series對(duì)象之間的協(xié)方差,以及一個(gè)DataFrame的協(xié)方差矩陣的計(jì)算接口數(shù)學(xué)統(tǒng)計(jì)和計(jì)算工具
窗口函數(shù)在移動(dòng)窗口上計(jì)算統(tǒng)計(jì)函數(shù)對(duì)于處理時(shí)序數(shù)據(jù)也是十分常見(jiàn)的,為此,Pandas提供了一系列窗口函數(shù),其中包括計(jì)數(shù)、求和、求平均、中位數(shù)、相關(guān)系數(shù)、方差、協(xié)方差、標(biāo)準(zhǔn)差、偏斜度和峰度窗口本身Pandas提供了三種對(duì)象:Rolling,Expanding和EWM數(shù)學(xué)統(tǒng)計(jì)和計(jì)算工具
數(shù)學(xué)統(tǒng)計(jì)和計(jì)算工具
窗口對(duì)象的統(tǒng)計(jì)函數(shù)函數(shù)說(shuō)明count()移動(dòng)窗口內(nèi)非NaN值的計(jì)數(shù)sum()移動(dòng)窗口內(nèi)的和mean()移動(dòng)窗口內(nèi)的平均值median()移動(dòng)窗口內(nèi)的中位數(shù)min()移動(dòng)窗口內(nèi)的最小值max()移動(dòng)窗口內(nèi)的最大值std()移動(dòng)窗口內(nèi)的無(wú)偏估計(jì)標(biāo)準(zhǔn)差(分母為n-1)var()移動(dòng)窗口內(nèi)的無(wú)偏估計(jì)方差(分母為n-1)skew()移動(dòng)窗口內(nèi)的偏度kurt()移動(dòng)窗口內(nèi)的峰度quantile()移動(dòng)窗口內(nèi)的指定分位數(shù)位置的值(傳入的應(yīng)該是[0,1]的值)apply()在移動(dòng)窗口內(nèi)使用普通的(可以自定義的)數(shù)組函數(shù)cov()移動(dòng)窗口內(nèi)的協(xié)方差corr()移動(dòng)窗口內(nèi)的相關(guān)系數(shù)數(shù)學(xué)聚合和分組運(yùn)算
如SQL操作中的分組和聚合等操作,Pandas中同樣提供了類(lèi)似的接口實(shí)現(xiàn)對(duì)數(shù)據(jù)集進(jìn)行分組,并對(duì)每個(gè)組執(zhí)行一定的操作,這就是Pandas中的“groupby”功能?!癵roupby”包括split-apply-combine三個(gè)階段“split”階段通過(guò)一些原則將數(shù)據(jù)分組;“apply”階段中,每個(gè)組分別執(zhí)行一個(gè)函數(shù),產(chǎn)生一個(gè)新值;”“combine”階段將各組的結(jié)果合并到最終對(duì)象中。對(duì)于拆分操作,Pandas對(duì)象(Series或者DataFrame)根據(jù)提供的鍵在特定的軸上進(jìn)行拆分。DataFrame可以指定是在index軸或者columns軸。數(shù)學(xué)聚合和分組運(yùn)算
拆分鍵的形式拆分的鍵的形式說(shuō)明示例
和所選軸長(zhǎng)度相同的數(shù)組(list或者NumPy的array,甚至是一個(gè)Series對(duì)象)Demo1group_list=['one','two','one','two','two']df.groupby(group_list).count()group_series=pd.Series(group_list)DataFrame某個(gè)列名的值或者列名的listDome2df.groupby('a')Demo3df.groupby(df['a'])#上述兩個(gè)表述等價(jià),df.groupby('a')是df.groupby(df['a'])的簡(jiǎn)便形式Demo4df.groupby(df.loc['one'],axis=1)參數(shù)為axis的標(biāo)簽的函數(shù)Demo5defget_index_number(index):ifindexin['one','two']:return'small'else:return'big'df.groupby(get_index_number)Demo6defget_column_letter_group(column):ifcolumnis'a':return'group_a'else:return'group_others'df.groupby(get_column_letter_group,axis=1)字典或者Series,給出axis上的值與分組名之間的對(duì)應(yīng)關(guān)系Demo7#該示例與Demo1的效果相同group_list=['one','two','one','two','two']group_series=pd.Series(group_list,index=df.index)df.groupby(group_series).組1、2、3、4的list或者NumPy的arrayDemo8df.groupby(['a','b'])數(shù)學(xué)聚合和分組運(yùn)算
應(yīng)用部分,主要實(shí)現(xiàn)以下三類(lèi)操作:聚合操作:對(duì)于每個(gè)組經(jīng)過(guò)計(jì)算得到一個(gè)概要性質(zhì)的統(tǒng)計(jì)值,例如求和、求平均等。轉(zhuǎn)換操作:對(duì)于每個(gè)組經(jīng)過(guò)計(jì)算得到和組的長(zhǎng)度相同的一系列的值,例如對(duì)數(shù)據(jù)的標(biāo)準(zhǔn)化、填充N(xiāo)A值等。過(guò)濾操作:通過(guò)對(duì)每個(gè)組的計(jì)算得到一個(gè)布爾類(lèi)型的值完成對(duì)組的篩選,例如通過(guò)求得組的平均值來(lái)篩選組,或者每個(gè)組內(nèi)通過(guò)一定的條件進(jìn)行篩選,如code5-33中的In[3]所示,篩選出每個(gè)組的前兩個(gè)
數(shù)據(jù)分析理論與Python實(shí)戰(zhàn)第五章數(shù)據(jù)分析與知識(shí)發(fā)現(xiàn)——一些常用的方法目錄分類(lèi)分析關(guān)聯(lián)分析聚類(lèi)分析回歸分析分類(lèi)分析分類(lèi)是找出數(shù)據(jù)庫(kù)中一組數(shù)據(jù)對(duì)象的共同特點(diǎn)并按照分類(lèi)模式將其劃分為不同的類(lèi),其目的是通過(guò)分類(lèi)模型,將數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)映射到某個(gè)給定的類(lèi)別。分類(lèi)學(xué)習(xí)是一類(lèi)監(jiān)督學(xué)習(xí)的問(wèn)題,訓(xùn)練數(shù)據(jù)會(huì)包含其分類(lèi)結(jié)果,根據(jù)分類(lèi)結(jié)果可以分為:二分類(lèi)問(wèn)題:是與非的判斷,分類(lèi)結(jié)果為兩類(lèi),從中選擇一個(gè)作為預(yù)測(cè)結(jié)果;多分類(lèi)問(wèn)題:分類(lèi)結(jié)果為多個(gè)類(lèi)別,從中選擇一個(gè)作為預(yù)測(cè)結(jié)果;多標(biāo)簽分類(lèi)問(wèn)題:不同于前兩者,多標(biāo)簽分類(lèi)問(wèn)題一個(gè)樣本的預(yù)測(cè)結(jié)果可能是多個(gè),或者有多個(gè)標(biāo)簽。多標(biāo)簽分類(lèi)問(wèn)題很常見(jiàn),比如一部電影可以同時(shí)被分為動(dòng)作片和犯罪片,一則新聞可以同時(shí)屬于政治和法律等。分類(lèi)分析常用算法邏輯回歸線性判別分析支持向量機(jī)決策樹(shù)K鄰近樸素貝葉斯分類(lèi)分析——邏輯回歸特征和最終分類(lèi)結(jié)果之間表示為線性關(guān)系,但是得到的f是映射到整個(gè)實(shí)數(shù)域中的,分類(lèi)問(wèn)題,例如二分類(lèi)問(wèn)題需要將f映射到{0,1}空間,因此仍需要一個(gè)函數(shù)g完成實(shí)數(shù)域到{0,1}空間的映射。邏輯回歸中函數(shù)g則為L(zhǎng)ogistic函數(shù),當(dāng)g>0是,x的預(yù)測(cè)結(jié)果為正,反之為負(fù)。邏輯回歸的優(yōu)點(diǎn)是直接對(duì)分類(lèi)概率(可能性)進(jìn)行建模,無(wú)需事先假設(shè)數(shù)據(jù)分布,是一個(gè)判別模型,并且g相當(dāng)于對(duì)x為正樣本的概率預(yù)測(cè),對(duì)于一些任務(wù)可以得到更多的信息。Logistic函數(shù)本身也有很好的性質(zhì),是任意階可導(dǎo)凸函數(shù),許多數(shù)學(xué)方面的優(yōu)化算法可以使用分類(lèi)分析——線性判別分析線性判別分析的思想是,針對(duì)訓(xùn)練集,將其投影到一條直線上,使得同類(lèi)樣本點(diǎn)盡量接近,異類(lèi)樣本點(diǎn)盡量遠(yuǎn)離。即同類(lèi)樣本計(jì)算得到的f盡量比較相似,協(xié)方差較小,異類(lèi)樣本的中心間距離盡可能大,同時(shí)考慮兩者可以得到線性判別分析的目標(biāo)函數(shù)。
分類(lèi)分析——支持向量機(jī)基本思想:基于訓(xùn)練集在樣本空間中找到一個(gè)超平面可以將不同類(lèi)別的樣本分開(kāi),并且使得所有的點(diǎn)都盡可能的遠(yuǎn)離超平面。但實(shí)際上離超平面很遠(yuǎn)的點(diǎn)都已被分類(lèi)正確,我們所關(guān)心的是離超平面較近的點(diǎn),這是容易被誤分類(lèi)的點(diǎn),如何使離得較近的點(diǎn)盡可能遠(yuǎn)離超平面。如何找到一個(gè)最優(yōu)的超平面以及最優(yōu)超平面如何定義是支持向量機(jī)需要解決的問(wèn)題。我們所需要尋找的超平面應(yīng)該對(duì)樣本局部擾動(dòng)的“容忍性”最好,即結(jié)果對(duì)于未知樣本的預(yù)測(cè)更加準(zhǔn)確。
分類(lèi)分析——支持向量機(jī)
分類(lèi)分析——支持向量機(jī)分類(lèi)分析——支持向量機(jī)目的是讓所有點(diǎn)到超平面的距離大于一定的值,即所有的點(diǎn)要在各自類(lèi)別的支持向量的兩邊,數(shù)學(xué)表達(dá)如下:經(jīng)過(guò)一系列推導(dǎo),SVM的優(yōu)化目標(biāo)等價(jià)于通過(guò)拉格朗日乘子法,可以將上述優(yōu)化目標(biāo)轉(zhuǎn)化為無(wú)約束的優(yōu)化函數(shù)
分類(lèi)分析——決策樹(shù)決策樹(shù)可以完成對(duì)樣本的分類(lèi),可以看作對(duì)于“當(dāng)前樣本是否屬于正類(lèi)”這一問(wèn)題的決策過(guò)程,模仿人類(lèi)做決策時(shí)的處理機(jī)制,基于樹(shù)的結(jié)果進(jìn)行決策。例如:在進(jìn)行信用卡申請(qǐng)時(shí)估計(jì)一個(gè)人是否可以通過(guò)信用卡申請(qǐng)時(shí)(分類(lèi)結(jié)果為是與否),可能需要其多方面特征,年齡、是否有固定工作、歷史信用評(píng)價(jià)(好、一般或差)。人類(lèi)在做類(lèi)似的決策會(huì)進(jìn)行一系列子問(wèn)題的判斷,是否有固定工作;年齡屬于青年、中年還是老年;歷史信用評(píng)價(jià)的好與差。在決策樹(shù)過(guò)程中,則會(huì)根據(jù)子問(wèn)題的搭建構(gòu)造中間結(jié)點(diǎn),葉結(jié)點(diǎn)則為總問(wèn)題的分類(lèi)結(jié)果,即是否通過(guò)信用卡申請(qǐng)分類(lèi)分析——決策樹(shù)示例:信用卡申請(qǐng)分類(lèi)分析——K鄰近
K鄰近算法的工作機(jī)制是,給定測(cè)試集合,基于某種距離度量計(jì)算訓(xùn)練集中與其最接近的k個(gè)訓(xùn)練樣本,基于這k個(gè)樣本的信息對(duì)測(cè)試樣本的類(lèi)別進(jìn)行預(yù)測(cè)。K鄰近算法需要考慮的首先是k值的確定,距離計(jì)算公式的確定,以及k個(gè)樣本對(duì)于測(cè)試樣本的分類(lèi)的影響的確定。前兩者的確定需要根據(jù)實(shí)際情況考慮,分類(lèi)影響最基本的思想是采用k個(gè)樣本中樣本最多的類(lèi)別作為測(cè)試樣本的類(lèi)別,或者根據(jù)距離加入權(quán)重的考慮。K鄰近算法與前面提到的算法都不太相同,它似乎無(wú)需訓(xùn)練,訓(xùn)練時(shí)間開(kāi)銷(xiāo)為0,這一類(lèi)的算法被稱(chēng)為“懶惰學(xué)習(xí)”。而樣本需要在訓(xùn)練階段進(jìn)行處理的算法被稱(chēng)為“急切學(xué)習(xí)”。分類(lèi)分析——樸素貝葉斯
關(guān)聯(lián)分析
關(guān)聯(lián)分析關(guān)聯(lián)規(guī)則指標(biāo)置信度(confidence):設(shè)W中支持物品集A的事務(wù)中,有c%的事務(wù)同時(shí)也支持物品集B,c%稱(chēng)為關(guān)聯(lián)規(guī)則A→B的置信度,即條件概率P(??|??)。實(shí)例說(shuō)明:以上述的啤酒和尿布為例,可信度就回答了這樣一個(gè)問(wèn)題:如果一個(gè)顧客購(gòu)買(mǎi)啤酒,那么他也購(gòu)買(mǎi)尿布的可能性有多大呢?在上述例子中,購(gòu)買(mǎi)啤酒的顧客中有50%的人購(gòu)買(mǎi)了尿布,所以置信度是50%。支持度(support):設(shè)W中有s%的事務(wù)同時(shí)支持物品集A和B,s%稱(chēng)為關(guān)聯(lián)規(guī)則A→B的支持度。支持度描述了A和B這兩個(gè)物品集的并集C在所有的事務(wù)中出現(xiàn)的概率有多大,即P(?????)。實(shí)例說(shuō)明:某天共有100個(gè)顧客到商場(chǎng)購(gòu)買(mǎi)物品,其中有15個(gè)顧客同時(shí)購(gòu)買(mǎi)了啤酒和尿布,那么上述的關(guān)聯(lián)規(guī)則的支持度就是15%。關(guān)聯(lián)分析關(guān)聯(lián)規(guī)則指標(biāo)期望置信度(expectedconfidence):設(shè)W中有e%的事務(wù)支持物品集B,e%稱(chēng)為關(guān)聯(lián)規(guī)則A→B的期望可信度度,即P(B)。指單純的物品集B在所有事務(wù)中出現(xiàn)的概率有多大。實(shí)例說(shuō)明:如果某天共有100個(gè)顧客到商場(chǎng)購(gòu)買(mǎi)物品,其中有25個(gè)顧客購(gòu)買(mǎi)了尿布,則上述的關(guān)聯(lián)規(guī)則的期望可信度就是25%。提升度(lift):提升度是置信度與期望置信度的比值,反映了“物品集A的出現(xiàn)”對(duì)物品集B的出現(xiàn)概率發(fā)生了多大的變化。實(shí)例說(shuō)明:上述實(shí)例中,置信度為50%,期望置信度為25%,則上述關(guān)聯(lián)規(guī)則的提升度=50%/25%=2關(guān)聯(lián)分析關(guān)聯(lián)規(guī)則挖掘定義給定一個(gè)交易數(shù)據(jù)集T,找出其中所有支持度support>=min_support、自信度confidence>=min_confidence的關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則挖掘步驟生成頻繁項(xiàng)集:這一階段找出所有滿(mǎn)足最小支持度的項(xiàng)集,找出的這些項(xiàng)集稱(chēng)為頻繁項(xiàng)集。生成規(guī)則:在上一步產(chǎn)生的頻繁項(xiàng)集的基礎(chǔ)上生成滿(mǎn)足最小自信度的規(guī)則,產(chǎn)生的規(guī)則稱(chēng)為強(qiáng)規(guī)則。關(guān)聯(lián)分析——Apriori算法Apriori算用于找出數(shù)據(jù)值中頻繁出現(xiàn)的數(shù)據(jù)集合,為了減少頻繁項(xiàng)集的生成時(shí)間,我們應(yīng)該盡早的消除一些完全不可能是頻繁項(xiàng)集的集合,Apriori的基本思想基于兩條定律。Apriori定律1):如果一個(gè)集合是頻繁項(xiàng)集,則它的所有子集都是頻繁項(xiàng)集。舉例:假設(shè)一個(gè)集合{A,B}是頻繁項(xiàng)集,即A、B同時(shí)出現(xiàn)在一條記錄的次數(shù)大于等于最小支持度min_support,則它的子集{A},{B}出現(xiàn)次數(shù)必定大于等于min_support,即它的子集都是頻繁項(xiàng)集。2):如果一個(gè)集合不是頻繁項(xiàng)集,則它的所有超集都不是頻繁項(xiàng)集。舉例:假設(shè)集合{A}不是頻繁項(xiàng)集,即A出現(xiàn)的次數(shù)小于min_support,則它的任何超集如{A,B}出現(xiàn)的次數(shù)必定小于min_support,因此其超集必定也不是頻繁項(xiàng)集關(guān)聯(lián)分析——FP-Tree算法關(guān)聯(lián)分析——FP-Tree算法關(guān)聯(lián)分析——FP-Tree算法關(guān)聯(lián)分析——FP-Tree算法關(guān)聯(lián)分析——FP-Tree算法關(guān)聯(lián)分析——PrefixSpan算法PrefixSpan算法是挖掘頻繁序列的經(jīng)典算法,子序列是指如果某序列A的所有項(xiàng)集都能在序列B的項(xiàng)集中找到,A則是B的子序列。PrefixSpan算法的全稱(chēng)是Prefix-ProjectedPatternGrowth,即前綴投影的模式挖掘。這里的前綴投影指的是前綴對(duì)應(yīng)于某序列的后綴。關(guān)聯(lián)分析——PrefixSpan算法輸入:序列數(shù)據(jù)集S和支持度閾值α輸出:所有滿(mǎn)足支持度要求的頻繁序列集找出所有長(zhǎng)度為1的前綴和對(duì)應(yīng)的投影數(shù)據(jù)庫(kù)對(duì)長(zhǎng)度為1的前綴進(jìn)行計(jì)數(shù),將支持度低于閾值α的前綴對(duì)應(yīng)的項(xiàng)從數(shù)據(jù)集S刪除,同時(shí)得到所有的頻繁1項(xiàng)序列,i=1.對(duì)于每個(gè)長(zhǎng)度為i滿(mǎn)足支持度要求的前綴進(jìn)行遞歸挖掘:找出前綴所對(duì)應(yīng)的投影數(shù)據(jù)庫(kù)。如果投影數(shù)據(jù)庫(kù)為空,則遞歸返回。統(tǒng)計(jì)對(duì)應(yīng)投影數(shù)據(jù)庫(kù)中各項(xiàng)的支持度計(jì)數(shù)。如果所有項(xiàng)的支持度計(jì)數(shù)都低于閾值α,則遞歸返回。將滿(mǎn)足支持度計(jì)數(shù)的各個(gè)單項(xiàng)和當(dāng)前的前綴進(jìn)行合并,得到若干新的前綴。令i=i+1,前綴為合并單項(xiàng)后的各個(gè)前綴,分別遞歸執(zhí)行第3步。聚類(lèi)分析聚類(lèi)分析是典型的無(wú)監(jiān)督學(xué)習(xí)任務(wù),訓(xùn)練樣本的標(biāo)簽信息未知,通過(guò)對(duì)無(wú)標(biāo)簽樣本的學(xué)習(xí)揭示數(shù)據(jù)內(nèi)在性質(zhì)及規(guī)律,這個(gè)規(guī)律通常是樣本間相似性的規(guī)律。聚類(lèi)分析是把一組數(shù)據(jù)按照相似性和差異性分為幾個(gè)類(lèi)別,其目的是使得屬于同一類(lèi)別的數(shù)據(jù)間的相似性盡可能大,不同類(lèi)別中的數(shù)據(jù)間的相似性盡可能小。聚類(lèi)試圖將數(shù)據(jù)集樣本劃分若干個(gè)不相交子集,這樣劃分出的子集可能有一些潛在規(guī)律和語(yǔ)義信息,但是其規(guī)律是事先未知的,概念語(yǔ)義和潛在規(guī)律是得到類(lèi)別后分析得到的。聚類(lèi)分析-k均值算法
聚類(lèi)分析-k均值算法步驟:隨機(jī)選取k個(gè)聚類(lèi)中心重復(fù)以下過(guò)程直至收斂對(duì)于每個(gè)樣本計(jì)算其所屬類(lèi)別對(duì)于每個(gè)類(lèi)重新計(jì)算聚類(lèi)中心缺點(diǎn):需要提前指定k,但是對(duì)于大多數(shù)情況下,對(duì)于k的確定是困難的;k均值算法對(duì)噪聲和離群點(diǎn)比較敏感,可能需要一定的預(yù)處理;初始聚類(lèi)中心的選擇可能會(huì)導(dǎo)致算法陷入局部最優(yōu),而無(wú)法得到全局最優(yōu)聚類(lèi)分析-DBSCAN算法DBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise,具有噪聲的基于密度的聚類(lèi)方法)是1996年提出的一種基于密度的空間的數(shù)據(jù)聚類(lèi)算法。該算法將具有足夠密度的區(qū)域劃分為簇,并在具有噪聲的空間數(shù)據(jù)庫(kù)中發(fā)現(xiàn)任意形狀的簇,它將簇定義為密度相連的點(diǎn)的最大集合。該算法將具有足夠密度的點(diǎn)作為聚類(lèi)中心,即核心點(diǎn),不斷對(duì)區(qū)域進(jìn)行擴(kuò)展。該算法利用基于密度的聚類(lèi)的概念,即要求聚類(lèi)空間中的一定區(qū)域內(nèi)所包含對(duì)象(點(diǎn)或其他空間對(duì)象)的數(shù)目不小于某一給定閾值。聚類(lèi)分析-DBSCAN算法步驟:DBSCAN通過(guò)檢查數(shù)據(jù)集中每點(diǎn)的Eps鄰域(半徑Eps內(nèi)的鄰域)來(lái)搜索簇,如果點(diǎn)p的Eps鄰域包含的點(diǎn)多于MinPts個(gè),則創(chuàng)建一個(gè)以p為核心對(duì)象的簇;然后,DBSCAN迭代地聚集從這些核心對(duì)象直接密度可達(dá)的對(duì)象,這個(gè)過(guò)程可能涉及一些密度可達(dá)簇的合并(直接密度可達(dá)是指:給定一個(gè)對(duì)象集合D,如果對(duì)象p在對(duì)象q的Eps鄰域內(nèi),而q是一個(gè)核心對(duì)象,則稱(chēng)對(duì)象p為對(duì)象q直接密度可達(dá)的對(duì)象);當(dāng)沒(méi)有新的點(diǎn)添加到任何簇時(shí),該過(guò)程結(jié)束聚類(lèi)分析-DBSCAN算法優(yōu)點(diǎn):聚類(lèi)速度快且能夠有效處理噪聲點(diǎn)和發(fā)現(xiàn)任意形狀的空間聚類(lèi);與K-MEANS比較起來(lái),不需要輸入要?jiǎng)澐值木垲?lèi)個(gè)數(shù);聚類(lèi)簇的形狀沒(méi)有偏倚;可以在需要時(shí)輸入過(guò)濾噪聲的參數(shù)。缺點(diǎn):當(dāng)數(shù)據(jù)量增大時(shí),要求較大的內(nèi)存支持I/O消耗也很大;當(dāng)空間聚類(lèi)的密度不均勻、聚類(lèi)間距差相差很大時(shí),聚類(lèi)質(zhì)量較差,因?yàn)檫@種情況下參數(shù)MinPts和Eps選取困難。算法聚類(lèi)效果依賴(lài)于距離公式的選取,實(shí)際應(yīng)用中常用歐式距離,對(duì)于高維數(shù)據(jù),存在“維數(shù)災(zāi)難”?;貧w分析回歸分析方法反映的是事務(wù)數(shù)據(jù)庫(kù)中屬性值在時(shí)間上的特征,產(chǎn)生一個(gè)將數(shù)據(jù)項(xiàng)映射到一個(gè)實(shí)值預(yù)測(cè)變量的函數(shù),發(fā)現(xiàn)變量或?qū)傩蚤g的依賴(lài)關(guān)系,其主要研究問(wèn)題包括數(shù)據(jù)序列的趨勢(shì)特征、數(shù)據(jù)序列的預(yù)測(cè)以及數(shù)據(jù)間的相關(guān)關(guān)系等。回歸分析的目的在于了解變數(shù)間是否相關(guān)、相關(guān)方向和強(qiáng)度,并建立數(shù)學(xué)模型來(lái)進(jìn)行預(yù)測(cè)。與分類(lèi)問(wèn)題相似,典型的監(jiān)督學(xué)習(xí)問(wèn)題,分類(lèi)問(wèn)題預(yù)測(cè)的目標(biāo)是離散變量,而回歸問(wèn)題預(yù)測(cè)的目標(biāo)是連續(xù)變量。由于回歸分析與線性分析之間有著很多的相似性,所以用于分類(lèi)的經(jīng)典算法經(jīng)過(guò)一些改動(dòng)即可以應(yīng)用于回歸分析?;貧w分析典型的回歸分析模型包括:線性回歸分析支持向量機(jī)(回歸)K鄰近(回歸)回歸分析-線性回歸分析
回歸分析-線性回歸分析
回歸分析-支持向量回歸
回歸分析-K鄰近回歸用于回歸的K鄰近算法與用于分類(lèi)的K鄰近算法思想類(lèi)似。通過(guò)找出一個(gè)樣本的k個(gè)最近鄰居,將這些鄰居的回歸目標(biāo)的平均值賦給該樣本,就可以預(yù)測(cè)出該樣本的回歸目標(biāo)值。更進(jìn)一步的,可以將不同距離的鄰居對(duì)該樣本產(chǎn)生的影響給予不同的權(quán)值,距離越近影響越大,如權(quán)值與距離成正比。數(shù)據(jù)分析理論與Python實(shí)戰(zhàn)第七章Pandas與scikit-learn實(shí)現(xiàn)數(shù)據(jù)的分析目錄7.1 分類(lèi)方法7.2回歸方法7.3聚類(lèi)方法分類(lèi)方法:Logistic回歸實(shí)現(xiàn)sklearn.linear_model.LogisticRegression支持二分類(lèi)(binary)一對(duì)多分類(lèi)(onevsrest)多項(xiàng)式回歸可以選擇L1或L2正則化分類(lèi)方法:Logistic回歸In[1]:importnumpyasnpfromsklearnimportlinear_model,datasetsIn[2]:iris=datasets.load_iris()X=iris.dataY=iris.targetIn[3]:log_reg=linear_model.LogisticRegression()log_reg.fit(X,Y)Out[3]:LogisticRegression(C=1.0,class_weight=None,dual=False,
fit_intercept=True,intercept_scaling=1,max_iter=100,
multi_class='ovr',n_jobs=1,penalty='l2',
random_state=None,solver='liblinear',tol=0.0001,
verbose=0,warm_start=False)In[4]:log_reg.predict([1,2,3,4])Out[4]:array([2])LogisticRegression類(lèi)中提供優(yōu)化方案(solver字段選擇):liblinear(默認(rèn))newton-cglbfgssagsaga分類(lèi)方法:Logistic回歸logistic回歸solver選擇
CaseSolverL1正則“l(fā)iblinear”,“saga”多項(xiàng)式損失(multinomialloss)“l(fā)bfgs”,“sag”,“saga”“newton-cg”大數(shù)據(jù)集(n_samples)“sag”,“saga”liblinear:應(yīng)用了坐標(biāo)下降,基于C++庫(kù)實(shí)現(xiàn)。不是真正意義上的多分類(lèi)模型,而是基于“one-vs-rest”思想,為每個(gè)類(lèi)別訓(xùn)練了一個(gè)二元分類(lèi)器。lbfgs,sag和newton-cg:只支持L2懲罰項(xiàng),對(duì)某些高維數(shù)據(jù)收斂更快。參數(shù)`multi_class`設(shè)為“multinomial”即為真正的分類(lèi),其預(yù)測(cè)比liblinear更為準(zhǔn)確。sag:基于平均隨機(jī)梯度下降算法。在大數(shù)據(jù)集上的表現(xiàn)更快,大數(shù)據(jù)集指樣本量大且特征數(shù)多。saga:sag的變體,它支持非平滑的L1正則選項(xiàng)penalty="l1"。對(duì)于稀疏多項(xiàng)式logistic回歸效果較好。分類(lèi)方法:SVM實(shí)現(xiàn):sklearn.svm.SVC()sklearn.svm.NuSVC()sklearn.svm.LinearSVC()區(qū)別:SVC與NuSVC比較接近,兩者參數(shù)略有不同。LinearSVC僅支持線性核函數(shù)的分類(lèi)分類(lèi)方法:SVMIn[1]:importnumpyasnpfromsklearnimportsvm,datasetsIn[2]:iris=datasets.load_iris()X=iris.dataY=iris.targetIn[3]:clf1=svm.SVC()clf2=svm.NuSVC()clf3=svm.LinearSVC()In[4]:clf1.fit(X,Y)Out[4]:SVC(C=1.0,cache_size=200,class_weight=None,coef0=0.0,
decision_function_shape=None,degree=3,gamma='auto',
kernel='rbf',max_iter=-1,probability=False,random_state=None,
shrinking=True,tol=0.001,verbose=False)In[5]:clf2.fit(X,Y)Out[5]:NuSVC(cache_size=200,class_weight=None,coef0=0.0,
decision_function_shape=None,degree=3,gamma='auto',
kernel='rbf',max_iter=-1,nu=0.5,probability=False,
random_state=None,shrinking=True,tol=0.001,verbose=False)In[6]:clf3.fit(X,Y)Out[6]:LinearSVC(C=1.0,class_weight=None,dual=True,fit_intercept=True,intercept_scaling=1,loss='squared_hinge',max_iter=1000,multi_class='ovr',penalty='l2',random_state=None,tol=0.0001,verbose=0)In[7]:clf1.predict([1,2,3,4])Out[7]:array([2])In[8]:clf2.predict([1,2,3,4])Out[8]:array([2])In[9]:clf3.predict([1,2,3,4])Out[9]:array([2])分類(lèi)方法:SVM對(duì)于多元分類(lèi)問(wèn)題SVC與NuSVC:decesion_function_shape字段“ovo”:“oneagainstone”(默認(rèn))“ovr”:“oneagainstrest”LinearSVC:multi_class字段“ovr””:“oneagainstrest”“crammer_singer”:“Crammer&Singer”分類(lèi)方法:SVM在擬合以后,可以通過(guò)參數(shù)獲取支持向量support_vectors_:全部支持向量support_:支持向量的索引n_support(LinearSVC不支持):各類(lèi)別的支持向量的數(shù)量In[10]:clf1.support_vectors_Out[10]:array([[4.3,3.,1.1,0.1],
…………,[5.9,3.,5.1,1.8]])In[11]:clf1.support_Out[10]:array([13,15,18,23,24,41,44,50,52,54,56,57,60,63,66,68,70,72,76,77,78,83,84,85,86,98,100,106,110,118,119,121,123,126,127,129,131,133,134,138,141,142,146,147,149],dtype=int32)In[12]:clf1.n_supportOut[12]:array([7,19,19],dtype=int32)分類(lèi)方法:Nearest
Neighbors實(shí)現(xiàn):sklearn.neighbors.KNeighborsClassifier()
sklearn.neighbors.RadiusNeighborsClassifier()
區(qū)別:KNeighborsClassifier:基于每個(gè)查詢(xún)點(diǎn)的k個(gè)最近鄰實(shí)現(xiàn)k是用戶(hù)指定的整數(shù)值。RadiusNeighborsClassifier基于每個(gè)查詢(xún)點(diǎn)的固定半徑r內(nèi)的鄰居數(shù)量實(shí)現(xiàn)其中r是用戶(hù)指定的浮點(diǎn)數(shù)值。分類(lèi)方法:Nearest
NeighborsIn[1]:importnumpyasnpfromsklearnimportneighbors,datasetsIn[2]:iris=datasets.load_iris()X=iris.dataY=iris.targetIn[3]:kclf=neighbors.KNeighborsClassifier()rclf=neighbors.RadiusNeighborsClassifier()In[4]:kclf.fit(X,Y)Out[4]:KNeighborsClassifier(algorithm='auto',leaf_size=30,metric='minkowski',metric_params=None,n_jobs=1,n_neighbors=5,p=2,weights='uniform')In[5]:rclf.fit(X,Y)Out[5]:RadiusNeighborsClassifier(algorithm='auto',leaf_size=30,metric='minkowski',metric_params=None,
outlier_label=None,p=2,radius=1.0,weights='uniform')In[6]:kclf.predict([[1,2,3,4]))Out[6]:array([1])In[7]:rclf.predict([[1,2,3,4]))Out[7]:array([1])分類(lèi)方法:Nearest
Neighborsn_neighbors與radius參數(shù):設(shè)置k、r值weig
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45052-2024土方機(jī)械純電動(dòng)輪胎式裝載機(jī)試驗(yàn)方法
- 2024招投標(biāo)與合同管理信息化系統(tǒng)采購(gòu)與實(shí)施合同3篇
- 16《太陽(yáng)》第二課時(shí) 說(shuō)課稿-2024-2025學(xué)年統(tǒng)編版語(yǔ)文五年級(jí)上冊(cè)
- 2024煤礦開(kāi)采項(xiàng)目承包合同安全設(shè)施建設(shè)要求3篇
- 6 將相和 第二課時(shí) 說(shuō)課稿-2024-2025學(xué)年語(yǔ)文五年級(jí)上冊(cè)統(tǒng)編版
- 2《我們的班規(guī)我們訂》 第二課時(shí) 說(shuō)課稿-2024-2025學(xué)年道德與法治四年級(jí)上冊(cè)統(tǒng)編版
- 4 我愛(ài)學(xué)語(yǔ)文(說(shuō)課稿)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文一年級(jí)上冊(cè)
- 2024植物墻合同模板
- 福建省南平市文昌學(xué)校2021年高三英語(yǔ)期末試卷含解析
- 福建省南平市外屯中學(xué)2021年高三物理聯(lián)考試卷含解析
- 施工機(jī)械施工方案
- 哈爾濱市城市規(guī)劃管理技術(shù)規(guī)定
- 提高筒倉(cāng)滑模施工混凝土外觀質(zhì)量QC成果PPT
- 加拿大——文化ppt
- 100以?xún)?nèi)不進(jìn)位不退位加減法200道
- 小學(xué)期末班級(jí)頒獎(jiǎng)典禮動(dòng)態(tài)課件PPT
- 智慧城市綜合管廊信息化解決方案課件
- 開(kāi)展創(chuàng)新型課題QC小組活動(dòng)實(shí)施指導(dǎo)意見(jiàn)
- 鋼廠電爐煙氣量計(jì)算方式
- 皮具工藝生產(chǎn)流程(共6頁(yè))
- 鋼結(jié)構(gòu)施工方案(中英文對(duì)照)
評(píng)論
0/150
提交評(píng)論