Python數(shù)據(jù)分析與挖掘 課件 魏偉一 第6-13章 認識數(shù)據(jù)-本文和時序數(shù)據(jù)挖掘_第1頁
Python數(shù)據(jù)分析與挖掘 課件 魏偉一 第6-13章 認識數(shù)據(jù)-本文和時序數(shù)據(jù)挖掘_第2頁
Python數(shù)據(jù)分析與挖掘 課件 魏偉一 第6-13章 認識數(shù)據(jù)-本文和時序數(shù)據(jù)挖掘_第3頁
Python數(shù)據(jù)分析與挖掘 課件 魏偉一 第6-13章 認識數(shù)據(jù)-本文和時序數(shù)據(jù)挖掘_第4頁
Python數(shù)據(jù)分析與挖掘 課件 魏偉一 第6-13章 認識數(shù)據(jù)-本文和時序數(shù)據(jù)挖掘_第5頁
已閱讀5頁,還剩490頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

數(shù)據(jù)分析與挖掘第6章認識數(shù)據(jù)本章內(nèi)容屬性及其類型數(shù)據(jù)的基本統(tǒng)計描述數(shù)據(jù)可視化數(shù)據(jù)對象的相似性度量21.屬性及其類型屬性:(Attribute)是一個數(shù)據(jù)字段,表示數(shù)據(jù)對象的一個特征。在文獻中,屬性、維(Dimension)、特征(Feature)和變量(Variable)表示相同的含義,可以在不同場合互換使用。屬性類型:屬性的取值范圍決定了屬性的類型。31.屬性及其類型1.標稱屬性標稱屬性(NominalAttribute)的值是一些符號或事物的名稱。每個值代表某種類別、編碼或狀態(tài),因此標稱屬性又可稱為是分類的(Categorical)。標稱屬性的值是枚舉的,可以用數(shù)字表示這些符號或名稱。常見的標稱屬性如姓名、籍貫、郵政編碼或婚姻狀態(tài)等。標稱屬性的值不僅僅是不同的名字,它提供了足夠的信息用于區(qū)分對象。41.屬性及其類型2.二元屬性二元屬性(BinaryAttribute)是標稱屬性的特例,也是一種布爾屬性,對應0和1兩個狀態(tài)。二元屬性分為對稱的和非對稱的。如果屬性的狀態(tài)結(jié)果是同等重要的,如拋硬幣的結(jié)果狀態(tài),則該屬性是對稱的二元屬性。一個非對稱的二元屬性其狀態(tài)的結(jié)果不是同樣重要的,如病毒檢測的陽性和陰性結(jié)果。為了方便,用1對重要結(jié)果(通常是稀有的)編碼,另一個用0編碼。51.屬性及其類型3.序數(shù)屬性序數(shù)屬性(OrdinalAttribute)的可能值之間存在有意義的序或秩評定,但是相繼值之間的差是未知的。常見的序數(shù)屬性如上衣的尺寸有S、M、L、XL,可以用數(shù)字如1、2、3、4分別對應屬性的取值。由于序數(shù)屬性是有序的,它的中位數(shù)是有意義的,因此序數(shù)屬性的中心趨勢度量可以是眾數(shù)和中位數(shù)。61.屬性及其類型4.數(shù)值屬性數(shù)值屬性(NumericAttribute)是可以度量的量,用整數(shù)或?qū)崝?shù)值表示,常見的數(shù)值屬性如年齡。數(shù)值屬性可以是區(qū)間標度的或比率標度的。區(qū)分區(qū)間標度和比率標度的原則是該屬性是否有固有的零點,如攝氏溫度沒有固定的零點,其比值沒有意義。所以是區(qū)間標度屬性,而開式溫度有固有的零點,比值有意義,是比率標度屬性。72.數(shù)據(jù)的基本統(tǒng)計描述把握數(shù)據(jù)的分布對于成功的數(shù)據(jù)預處理是至關重要的。基本的數(shù)據(jù)統(tǒng)計描述可以識別數(shù)據(jù)的性質(zhì),并凸顯哪些數(shù)據(jù)應被視為噪聲或離群點。數(shù)據(jù)的描述性統(tǒng)計主要包括數(shù)據(jù)的集中趨勢、離中趨勢、相對離散程度和分布的形狀四個方面。82.數(shù)據(jù)的基本統(tǒng)計描述中心趨勢度量:在統(tǒng)計學中是指一組數(shù)據(jù)向某一中心值靠攏的程度,它反映了一組數(shù)據(jù)中心點的位置所在。中心趨勢度量就是尋找數(shù)據(jù)水平的代表值或中心值。中心趨勢度量包括均值、中位數(shù)、眾數(shù)和中列數(shù)。1.均值:數(shù)據(jù)集“中心”的最常用的數(shù)值度量是(算術(shù))均值。均值是描述數(shù)據(jù)集的最常用統(tǒng)計量,但它并非度量數(shù)據(jù)中心的最佳方法,主要原因是均值對噪聲數(shù)據(jù)很敏感。92.數(shù)據(jù)的基本統(tǒng)計描述2.中位數(shù):中位數(shù)(Median)又稱中點數(shù)或中值。在概率論與統(tǒng)計學中,中位數(shù)一般用于數(shù)值型數(shù)據(jù)。在數(shù)據(jù)挖掘中可以把中位數(shù)推廣到序數(shù)型數(shù)據(jù)中。當數(shù)據(jù)量很大時,中位數(shù)的計算開銷會很大,此時可以采用近似估計的方法。假定數(shù)據(jù)可以根據(jù)數(shù)值劃分為區(qū)間,并且知道每個區(qū)間的數(shù)據(jù)個數(shù),可以使用如下公式計算中位數(shù):102.數(shù)據(jù)的基本統(tǒng)計描述例:某企業(yè)50名工人加工零件的數(shù)據(jù)如下表所示,計算加工零件數(shù)值的中位數(shù)。112.數(shù)據(jù)的基本統(tǒng)計描述3.眾數(shù):眾數(shù)(Mode)是一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的數(shù)值。具有一個、兩個或三個眾數(shù)的數(shù)據(jù)集分別稱為單峰(Unimodal)、雙峰(Bimodal)和三峰(Trimodal)。一般具有兩個或以上眾數(shù)的數(shù)據(jù)集是多峰的(Multimodal)。在極端情況下,如果每個數(shù)值只出現(xiàn)一次則它沒有眾數(shù)。對于非對稱的單峰型數(shù)據(jù)集,一般有下面的經(jīng)驗關系:122.數(shù)據(jù)的基本統(tǒng)計描述4.中列數(shù):中列數(shù)(Midrange)是數(shù)據(jù)集中的最大值和最小值的平均值,也可以度量數(shù)值數(shù)據(jù)的中心趨勢。利用pandas統(tǒng)計中位數(shù)、均值和眾數(shù)。132.數(shù)據(jù)的基本統(tǒng)計描述數(shù)據(jù)散布度量用于評估數(shù)值數(shù)據(jù)散布或發(fā)散的程度。散布度量的測定是對統(tǒng)計資料分散狀況的測定,即找出各個變量值與集中趨勢的偏離程度通過度量散布趨勢。數(shù)據(jù)散布度量包括極差、分位數(shù)、四分位數(shù)、百分位數(shù)和四分位數(shù)極差。方差和標準差也可以描述數(shù)據(jù)分布的散布。142.數(shù)據(jù)的基本統(tǒng)計描述極差、四分位數(shù)和四分位數(shù)極差極差(Range)又稱范圍誤差或全距,是一組觀測值的最大值與最小值之間的差距。四分位數(shù)是將一組數(shù)據(jù)由小到大(或由大到?。┡判蚝?,用3個點將全部數(shù)據(jù)分為4等份,與這3個點位置上相對應的數(shù)值稱為四分位數(shù),分別記為Q1,Q2、Q3。其中,Q3到Q1之間的距離的差的一半又稱為分半四分位差,記為(Q3-Q1)/2。第1個和第3個分位數(shù)之間的距離為四分位數(shù)極差。152.數(shù)據(jù)的基本統(tǒng)計描述統(tǒng)計數(shù)據(jù)的分位數(shù)等統(tǒng)計量。16importpandasaspddf=pd.DataFrame([[1,2],[7,-4],[3,9],[3,-4]],

index=['a','b','c','d'],columns=['one','two'])display(df)df.describe()2.數(shù)據(jù)的基本統(tǒng)計描述五數(shù)概括、盒圖與離群點五數(shù)概括法即用下面的五個數(shù)來概括數(shù)據(jù),分別是最小值、第1四分位數(shù)(Q1)、中位數(shù)(Q2)、第3四分位數(shù)(Q3)和最大值。172.數(shù)據(jù)的基本統(tǒng)計描述五數(shù)概括、盒圖與離群點盒圖的邊界分別為第一四分位數(shù)和第三四分位數(shù)在箱體上中位數(shù)即第二四分數(shù)處畫垂線虛線被稱為觸須線,觸須線的端點為最小值和最大值利用四分位數(shù)間距IQR=Q3-Q1,找到界限,超出即為異常值。IQR左=Q1-1.5×IQRIQR右=Q3+1.5×IQR182.數(shù)據(jù)的基本統(tǒng)計描述五數(shù)概括、盒圖與離群點例:如數(shù)據(jù)集的第一四分位數(shù)為42,第三四分位數(shù)為50,計算盒圖的上、下界限,并判斷數(shù)據(jù)值65是否應該認為是一個異常值?由于箱線圖上限為50+1.5×8=62,由于65大于上限,可以判定是異常值。193.數(shù)據(jù)可視化數(shù)據(jù)可視化(DataVisualization)通過圖形清晰有效地表達數(shù)據(jù)。它將數(shù)據(jù)所包含的信息的綜合體,包括屬性和變量,抽象化為一些圖表形式。數(shù)據(jù)可視化方法包括:基于像素的技術(shù)幾何投影技術(shù)基于圖符的技術(shù)和基于圖形的技術(shù)幾何投影技術(shù)幫助發(fā)現(xiàn)多維數(shù)據(jù)集的有趣投影。

難點:在二維顯示上可視化高維空間2021m維的數(shù)據(jù)集,創(chuàng)建m個窗口一條記錄m維的值對應m個像素在相應的窗口中像素顏色反映了數(shù)據(jù)值Income(b)CreditLimit(c)transactionvolume(d)age3.數(shù)據(jù)可視化3.數(shù)據(jù)可視化幾何投影可視化技術(shù)幾何投影技術(shù)可以幫助用戶發(fā)現(xiàn)多維數(shù)據(jù)集的有趣投影。幾何投影技術(shù)的難點在于在二維顯示上可視化高維空間。散點圖使用笛卡爾坐標顯示二維數(shù)據(jù)點。使用不同顏色或形狀表示不同的數(shù)據(jù)點,可以增加第三維。223.數(shù)據(jù)可視化基于圖符的可視化技術(shù)基于圖符的(Icon-based)可視化技術(shù)使用少量圖符表示多維數(shù)據(jù)值。有兩種流行的基于圖符的技術(shù),即切爾諾夫臉和人物線條圖。23把多達18個變量(維)的多維數(shù)據(jù)以卡通人臉顯示把多維數(shù)據(jù)映射到5-段任務線條圖,其中每個都畫有四肢和一個軀體,兩個維被映射到x和y,其余的映射到四肢角度或長度。3.數(shù)據(jù)可視化層次可視化技術(shù)對于大型高維數(shù)據(jù)集很難實現(xiàn)可視化技術(shù)。層次可視化把大型的高維數(shù)據(jù)的所有維劃分成子集(子空間),這些子空間按層次可視化。243.數(shù)據(jù)可視化可視化復雜對象和關系早期的可視化技術(shù)主要用于分析數(shù)值數(shù)據(jù),然而現(xiàn)在出現(xiàn)了越來越多的非數(shù)值數(shù)據(jù),比如文本和社會網(wǎng)絡數(shù)據(jù),因此可視化這些非數(shù)值數(shù)據(jù)引起了更多廣泛的關注。標簽云是一種用戶產(chǎn)生的標簽統(tǒng)計量的可視化。在標簽云中,標簽通常按字母次序或用戶指定的次序列舉。253.數(shù)據(jù)可視化高維數(shù)據(jù)可視化主要分為降維方法和非降維方法。1.降維方法降維方法將高維數(shù)據(jù)投影到低維空間,盡量保留高維空間中原有的特性和聚類關系。常見的降維方法有主成分分析、多維度分析(Multi-DimensionalScaling,MDS)和自組織圖(Self-OrganizationMap,SOM)等。263.數(shù)據(jù)可視化常用的數(shù)據(jù)降維方法如下3.數(shù)據(jù)可視化高維數(shù)據(jù)可視化主要分為降維方法和非降維方法。2.非降維方法非降維方法保留了高維數(shù)據(jù)在每個維度上的信息,可以展示所有的維度。各種非降維方法的主要區(qū)別在于如何對不同的維度進行數(shù)據(jù)到圖像屬性的映射。283.數(shù)據(jù)可視化Python可視化在Python中,使用最多的數(shù)據(jù)可視化工具是Matplotlib,除此之外還有很多其他可選的可視化工具包,主要包括以下幾類。(1)Matplotlib以及基于Matplotlib開發(fā)的工具包:Pandas中的封裝MatplotlibAPI的畫圖功能,Seaborn和networkx等;(2)基于JavaScript和d3.js開發(fā)的可視化工具,如plotly等,這類工具可以顯示動態(tài)圖且具有一定的交互性;(3)其他提供了Python調(diào)用接口的可視化工具,如OpenGL,GraphViz等,這一類工具各有特點且在特定領域應用廣泛。293.數(shù)據(jù)可視化例:詞云繪制例:使用regplot函數(shù)繪制回歸圖4.數(shù)據(jù)對象的相似性度量現(xiàn)實中,我們需要處理的數(shù)據(jù)具有著不同的形式和特征。而對數(shù)據(jù)相似性的度量又是數(shù)據(jù)挖掘分析中非常重要的環(huán)節(jié)。數(shù)據(jù)矩陣與相異性矩陣314.數(shù)據(jù)對象的相似性度量標稱屬性的相似性度量32兩個對象i和j之間的相異性根據(jù)不匹配率進行計算,如下式:其中,m是匹配的數(shù)目,即對象i和j狀態(tài)相同的屬性數(shù),p是對象的屬性總數(shù)。4.數(shù)據(jù)對象的相似性度量33二元屬性的相似性度量對象i對象j

10sum1qrq+r0sts+tsumq+sr+tp對于對稱的二元屬性,兩個狀態(tài)是同等重要的。如果對象i和j都用對稱的二元屬性刻畫,則i和j的相異性定義為:4.數(shù)據(jù)對象的相似性度量34二元屬性的相似性度量對于對稱的二元屬性,兩個狀態(tài)是同等重要的。如果對象i和j都用對稱的二元屬性刻畫,則i和j的相異性定義為:對于非對稱二元屬性,只關心“正匹配”的情況,也就是只關心兩個對象屬性中,都是1的情況,因此負匹配數(shù)t被認為是不重要的,可以忽略,如式所示。4.數(shù)據(jù)對象的相似性度量數(shù)值屬性的相似性度量35(1)歐氏距離(2)曼哈頓距離歐式距離(EulideanDistance)又稱直線距離。i=(xi1,xi2,…,xip)和j=(xj1,xj2,…,xjp)表示兩個數(shù)值屬性描述的對象。對象i和j之間的歐式距離為4.數(shù)據(jù)對象的相似性度量數(shù)值屬性的相似性度量36(3)切比雪夫距離切比雪夫距離(ChebyshevDistance)是向量空間中的一種度量。4.數(shù)據(jù)對象的相似性度量數(shù)值屬性的相似性度量37(4)閔可夫斯基距離(5)漢明距離(HammingDistance)兩個等長字符串s1與s2之間的漢明距離定義為將其中一個變?yōu)榱硗庖粋€所需要做的最小替換次數(shù)。4.數(shù)據(jù)對象的相似性度量序數(shù)屬性的相似性度量序數(shù)屬性的每個屬性值都代表了一種次序,所以,無論使用數(shù)字還是文字性的敘述,都可以表示成數(shù)字的形式。38混合類型屬性的相似性以上幾種情況都是針對數(shù)據(jù)庫中單一類型的數(shù)據(jù),但是很多時候,遇到的一組數(shù)據(jù)可能擁有多種類型的屬性,也就是混合類型屬性。4.數(shù)據(jù)對象的相似性度量余弦相似性針對文檔數(shù)據(jù)的相似度測量一般使用余弦相似性。在處理文檔的時候,一般采用文檔所擁有的關鍵詞來刻畫一個文檔的特征。394.數(shù)據(jù)對象的相似性度量1.用Numpy實現(xiàn)常見的距離度量importnumpyasnp#歐式距離(Eulideandistance)defeuclidean(x,y):returnnp.sqrt(np.sum((x-y)**2))#曼哈頓距離(Manhattandistance)defmanhattan(x,y):returnnp.sum(np.abs(x-y))#切比雪夫距離(Chebyshevdistance)defchebyshev(x,y):returnnp.max(np.abs(x-y))#閔可夫斯基距離(Minkowskidistance)def

minkowski(x,y,p):return

np.sum(np.abs(x-y)**p)**(1/p)#漢明距離(Hammingdistance)defhamming(x,y):return

np.sum(x!=y)/len(x)#余弦距離defcos_similarity(x,y):returnnp.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))4.數(shù)據(jù)對象的相似性度量2.使用scipy的pdist進行數(shù)據(jù)對象距離的計算scipy.spatial.distance.pdist(X,metric='euclidean',*args,**kwargs)參數(shù)X為m個在n維空間上的觀測值。Metric為使用的距離度量,常用的取值有‘canberra’,‘chebyshev’,‘cityblock’,‘correlation’,‘cosine’,‘dice’,‘euclidean’,‘hamming’,‘jaccard’,‘jensenshannon’,‘kulsinski’,‘mahalanobis’,‘matching’和‘minkowski’等。4.數(shù)據(jù)對象的相似性度量2.使用scipy的pdist進行數(shù)據(jù)對象距離的計算fromscipy.spatial.distanceimportpdistx=(0.7,0.9,0.2,0.3,0.8,0.4,0.6,0,0.5)y=(0.6,0.8,0.5,0.4,0.3,0.5,0.7,0.2,0.6)X=np.vstack([x,y])d1=pdist(X,'euclidean')print('歐式距離:',d1)d2=pdist(X,'cityblock')print('曼哈頓距離:',d2)d3=pdist(X,'chebyshev')print('切比雪夫距離:',d3)d4=pdist(X,'minkowski',p=2)print('閔可夫斯基距離:',d4)d5=pdist(X,'cosine')print('余弦相似性:',1-d5)本章小結(jié)數(shù)據(jù)集由數(shù)據(jù)對象組成。數(shù)據(jù)對象代表實體,用屬性描述。數(shù)據(jù)屬性有標稱、二元的、序數(shù)的或數(shù)值的。數(shù)據(jù)的基本統(tǒng)計描述為數(shù)據(jù)預處理提供了分析的基礎。數(shù)據(jù)概括的基本統(tǒng)計量包括度量數(shù)據(jù)中心趨勢的均值、加權(quán)均值、中位數(shù)和眾數(shù),以及度量數(shù)據(jù)散布的極差、分位數(shù)、四分位數(shù)、四分位數(shù)極差、方差和標準差等。數(shù)據(jù)可視化技術(shù)主要有基于像素的、基于圖標或?qū)哟蔚姆椒?。?shù)據(jù)對象的相似性度量用于諸如聚類、離群點分析等應用中。相似度度量基于相似性矩陣,對每種屬性類型或其組合進行相似度計算。數(shù)據(jù)分析與挖掘第7章數(shù)據(jù)預處理本章內(nèi)容數(shù)據(jù)預處理的必要性數(shù)據(jù)清洗數(shù)據(jù)集成數(shù)據(jù)標準化數(shù)據(jù)規(guī)約數(shù)據(jù)變換與離散化利用sklearn進行數(shù)據(jù)預處理45數(shù)據(jù)是數(shù)據(jù)挖掘的目標對象和原始資源,對數(shù)據(jù)挖掘最終結(jié)果起著決定性的作用?,F(xiàn)實世界中的數(shù)據(jù)是多種多樣的,具有不同的特征,這就要求數(shù)據(jù)的存儲采用合適的數(shù)據(jù)類型,并且數(shù)據(jù)挖掘算法的適用性會受到具體的數(shù)據(jù)類型限制。第4章數(shù)據(jù)預處理低質(zhì)量的數(shù)據(jù)導致低質(zhì)量的數(shù)據(jù)挖掘結(jié)果1.數(shù)據(jù)預處理的必要性現(xiàn)實世界中的數(shù)據(jù)大多都是“臟”的,原始數(shù)據(jù)通常存在著噪聲、不一致、部分數(shù)據(jù)缺失等問題。數(shù)據(jù)的不一致各應用系統(tǒng)的數(shù)據(jù)缺乏統(tǒng)一的標準和定義,數(shù)據(jù)結(jié)構(gòu)有較大的差異2.噪聲數(shù)據(jù)收集數(shù)據(jù)時很難得到精確的數(shù)據(jù),如數(shù)據(jù)采集設備故障、數(shù)據(jù)傳輸過程中會出現(xiàn)錯誤或存儲介質(zhì)可能出現(xiàn)的損壞等情況3.缺失值系統(tǒng)設計時可能存在的缺陷或者在系統(tǒng)使用過程中人為因素的影響471.數(shù)據(jù)預處理的必要性數(shù)據(jù)質(zhì)量要求數(shù)據(jù)挖掘需要的數(shù)據(jù)必須是高質(zhì)量的數(shù)據(jù),即數(shù)據(jù)挖掘所處理的數(shù)據(jù)必須具有準確性(Correctness)、完整性(Completeness)和一致性(Consistency)等性質(zhì)。此外,時效性(Timeliness)、可信性(Believability)和可解釋性(Interpretability)也會影響數(shù)據(jù)的質(zhì)量。482.數(shù)據(jù)清洗現(xiàn)實世界中的數(shù)據(jù)一般是不完整的、有噪聲和不一致的“臟”數(shù)據(jù),數(shù)據(jù)清理試圖填充缺失的數(shù)據(jù)值、光滑噪聲、識別離群點并糾正數(shù)據(jù)中的不一致。數(shù)據(jù)并不總是完整的引起空缺值的原因設備故障和其他數(shù)據(jù)不一致可能被刪除數(shù)據(jù)沒有被錄入-------Missingdata需要經(jīng)過推斷而補上492.數(shù)據(jù)清洗數(shù)據(jù)清洗方法1.缺失值的處理(1)忽略元組(2)人工填寫缺失值(3)使用一個全局常量填充缺失值(4)使用屬性的中心度量(如均值或中位數(shù))填充缺失值(5)使用與給定元組屬同一類的所有樣本的屬性均值或中位數(shù)(6)使用最可能的值填充缺失值502.數(shù)據(jù)清洗2.噪聲數(shù)據(jù)的處理噪聲(Noise)是被測量的變量的隨機誤差或方差。噪聲的處理方法一般有分箱、回歸和離群點分析等方法。(1)分箱分箱(Binning)方法通過考察數(shù)據(jù)的“近鄰”(即周圍的值)來光滑有序數(shù)據(jù)值。512.數(shù)據(jù)清洗2.噪聲數(shù)據(jù)的處理(2)回歸回歸(Regression)用一個函數(shù)擬合數(shù)據(jù)來光滑數(shù)據(jù)。(3)離群點分析離群點分析(OutlierAnalysis)可以通過如聚類的方法來檢測離群點。522.數(shù)據(jù)清洗利用Pandas進行數(shù)據(jù)清洗:1.缺失值的處理(1)檢測與處理缺失值函數(shù)isnull()可以直接判斷該列中的哪個數(shù)據(jù)為NaN。53In[1]:string_data=pd.Series(['aardvark','artichoke',np.nan,'avocado'])print(string_data)string_data.isnull()2.數(shù)據(jù)清洗1.缺失值的處理(2)缺失值的統(tǒng)計利用isnull().sum()統(tǒng)計缺失值54In[3]:df=pd.DataFrame(np.arange(12).reshape(3,4),columns=['A','B','C','D'])df.iloc[2,:]=np.nandf[3]=np.nanprint(df)df.isnull().sum()2.數(shù)據(jù)清洗1.缺失值的處理(3)info方法查看缺失值55In[4]:()Out[4]:<class'pandas.core.frame.DataFrame'>RangeIndex:3entries,0to2Datacolumns(total5columns):A2non-nullfloat64B2non-nullfloat64C2non-nullfloat64D2non-nullfloat6430non-nullfloat64dtypes:float64(5)memoryusage:200.0bytes2.數(shù)據(jù)清洗1.缺失值的處理(4)刪除缺失值56dropna(axis=0,how=‘a(chǎn)ny’,thresh=None,subset=None,

inplace=False)參數(shù)名稱使用說明axis默認為axis=0,當某行出現(xiàn)缺失值時,將該行丟棄并返回,當axis=1,當某列出現(xiàn)缺失值時,將該列丟棄how確定缺失值個數(shù),缺省時how=‘a(chǎn)ny’、how=‘a(chǎn)ny’表明只要某行有缺失值就將該行丟棄,how=‘a(chǎn)ll’表明某行全部為缺失值才將其丟棄thresh閾值設定,當行列中非缺省值的數(shù)量少于給定的值就將該行丟棄subset

inplace部分標簽中刪除某行列,如:subset=[’a’,’d’],即丟棄子列ad中含有缺失值的行bool取值,默認False,當inplace=True,即對原數(shù)據(jù)操作,無返回值2.數(shù)據(jù)清洗1.缺失值的處理(4)刪除缺失值57fromnumpyimportnanasNAdata=pd.DataFrame([[1.,5.5,3.],[1.,NA,NA],[NA,NA,NA],

[NA,5.5,3.]])print(data)cleaned=data.dropna()print('刪除缺失值后的:\n',cleaned)刪除缺失值后的:

0

1

20

1.0

5.5

3.0傳入how=‘a(chǎn)ll’將只丟棄全為NA的那些行。2.數(shù)據(jù)清洗1.缺失值的處理(4)刪除缺失值58如果用同樣的方式丟棄dataframe的列,只需傳入axis=1即可?!纠縟ropna中的axis參數(shù)應用。In[9]:data=pd.DataFrame([[1.,5.5,NA],[1.,NA,NA],[NA,NA,NA],[NA,5.5,NA]])print(data)data.dropna(axis=1,how='all')2.數(shù)據(jù)清洗1.缺失值的處理(4)刪除缺失值59可以?thresh參數(shù),當傳入thresh=N時,表示要求一行至少具有N個非NaN才能保留。【例】dropna中的thresh參數(shù)應用。In[10]:df=pd.DataFrame(np.random.randn(7,3))df.iloc[:4,1]=NAdf.iloc[:2,2]=NAprint(df)df.dropna(thresh=2)2.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值缺失值所在的特征為數(shù)值型時,通常利用其均值、中位數(shù)和眾數(shù)等描述其集中趨勢的統(tǒng)計量來填充;缺失值所在特征為類別型數(shù)據(jù)時,則選擇眾數(shù)來填充。Pandas庫中提供了缺失值替換的方法fillna。pandas.DataFrame.fillna(value=None,method=None,asxi=None,inplace=False,limit=None)602.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值61fillna參數(shù)及其說明參數(shù)名稱參數(shù)說明value用于填充缺失值的標量值或字典對象method插值方式axis待填充的軸,默認axis=0inplace修改調(diào)用者對象而不產(chǎn)生副本limit(對于前向和后向填充)可以連續(xù)填充的最大數(shù)量2.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值62通過字典形式填充缺失值。In[11]:df=pd.DataFrame(np.random.randn(5,3))df.loc[:3,1]=NAdf.loc[:2,2]=NAprint(df)df.fillna({1:0.88,2:0.66})2.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值63fillna中method的應用。In[12]:df=pd.DataFrame(np.random.randn(6,3))df.iloc[2:,1]=NAdf.iloc[4:,2]=NAprint(df)df.fillna(method='ffill')2.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值64DataFrame中用均值填充。In[14]:df=pd.DataFrame(np.random.randn(4,3))df.iloc[2:,1]=NAdf.iloc[3:,2]=NAprint(df)df[1]=df[1].fillna(df[1].mean())print(df)2.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值65replace替換數(shù)據(jù)值。In[15]:data={'姓名':['張三','小明','馬芳','國志'],'性別':['0','1','0','1'],

'籍貫':['北京','甘肅','','上海']}df=pd.DataFrame(data)df=df.replace('','不詳')print(df)2.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值66replace替換數(shù)據(jù)值。In[16]:df=df.replace(['不詳','甘肅'],['蘭州','蘭州'])print(df)In[17]:df=df.replace({'1':'男','0':'女'})print(df)2.數(shù)據(jù)清洗1.缺失值的處理(5)填充缺失值67利用函數(shù)或映射進行數(shù)據(jù)轉(zhuǎn)換。在數(shù)據(jù)分析中,經(jīng)常需要進行數(shù)據(jù)的映射或轉(zhuǎn)換,在Pandas中可以自定義函數(shù),然后通過map方法實現(xiàn)。data={'姓名':['張三','小明','馬芳','國志'],'性別':['0','1','0','1'],'籍貫':['北京','蘭州','蘭州','上海']}df=pd.DataFrame(data)df['成績']=[58,86,91,78]print(df)defgrade(x):

ifx>=90:

return'優(yōu)'

elif70<=x<90:

return'良'

elif60<=x<70:

return'中'

else:

return'差'df['等級']=df['成績'].map(grade)print(df)2.數(shù)據(jù)清洗3.數(shù)據(jù)異常值檢測異常值是指數(shù)據(jù)中存在的數(shù)值明顯偏離其余數(shù)據(jù)的值。異常值的存在會嚴重干擾數(shù)據(jù)分析的結(jié)果,因此經(jīng)常要檢驗數(shù)據(jù)中是否有輸入錯誤或含有不合理的數(shù)據(jù)。在利用簡單的數(shù)據(jù)統(tǒng)計方法中一般常用散點圖、箱線圖和3σ法則。682.數(shù)據(jù)清洗3.數(shù)據(jù)異常值檢測1)散點圖方法:69In[19]:wdf=pd.DataFrame(np.arange(20),columns=['W'])wdf['Y']=wdf['W']*1.5+2wdf.iloc[3,1]=128wdf.iloc[18,1]=150wdf.plot(kind='scatter',x='W',y='Y')Out[19]:

2.數(shù)據(jù)清洗3.數(shù)據(jù)異常值檢測2)盒圖:利用箱線圖進行異常值檢測時,根據(jù)經(jīng)驗,將最大(最小)值設置為與四分位數(shù)值間距為1.5個IQR(IQR=Q3-Q2)的值,即min=Q1-1.5IQR,max=Q3+1.5IQR,小于min和大于max的值被認為是異常值。70fig=wdf.boxplot(column=['Y'],return_type='dict')min=fig['caps'][0].get_ydata()[0]#獲取下邊緣值max=fig['caps'][1].get_ydata()[0]#獲取上邊緣值print('max=',max,';min=',min)print('離群點的索引是:')print(wdf[(wdf['Y']<min)|(wdf['Y']>max)].index)3.數(shù)據(jù)集成3.數(shù)據(jù)異常值檢測3)3σ法則:若數(shù)據(jù)服從正態(tài)分布,在3σ原則下,異常值被定義為一組測定值中與平均值的偏差超過3倍標準差的值,因為在正態(tài)分布的假設下,距離平均值3σ之外的值出現(xiàn)的概率小于0.003。因此根據(jù)小概率事件,可以認為超出3σ之外的值為異常數(shù)據(jù)。71defoutRange(S):

blidx=(S.mean()-3*S.std()>S)|(S.mean()+3*S.std()<S)

idx=np.arange(S.shape[0])[blidx]

outRange=S.iloc[idx]

returnoutRangeoutier=outRange(wdf['Y'])outier2.數(shù)據(jù)清洗異常數(shù)據(jù)的處理1)刪除記錄直接將含有異常值的數(shù)據(jù)刪除。2)視為缺失值將異常值視為缺失值,利用處理缺失值的方法進行處理。3)平均值修正可以用前后兩個觀測值的平均值修正該異常值。4)不處理直接在具有異常值的數(shù)據(jù)集上進行數(shù)據(jù)分析與挖掘。3.數(shù)據(jù)集成數(shù)據(jù)集成是將多個數(shù)據(jù)源中的數(shù)據(jù)合并,存放于一個一致的數(shù)據(jù)存儲中。數(shù)據(jù)集成過程中的關鍵問題1.實體識別2.數(shù)據(jù)冗余和相關分析3.元組重復4.數(shù)據(jù)值沖突檢測與處理733.數(shù)據(jù)集成數(shù)據(jù)集成過程中的關鍵問題1.實體識別實體識別問題是數(shù)據(jù)集成中的首要問題,因為來自多個信息源的現(xiàn)實世界的等價實體才能匹配。如數(shù)據(jù)集成中如何判斷一個數(shù)據(jù)庫中的customer_id和另一數(shù)據(jù)庫中的cust_no是指相同的屬性?743.數(shù)據(jù)集成數(shù)據(jù)集成過程中的關鍵問題2.數(shù)據(jù)冗余和相關分析冗余是數(shù)據(jù)集成的另一重要問題。如果一個屬性能由另一個或另一組屬性值“推導”出,則這個屬性可能是冗余的。屬性命名不一致也會導致結(jié)果數(shù)據(jù)集中的冗余。75有些冗余可以被相關分析檢測到,對于標稱屬性,使用

(卡方)檢驗,對于數(shù)值屬性,可以使用相關系數(shù)(correlationcoefficient)和協(xié)方差(covariance)評估屬性間的相關性。3.數(shù)據(jù)集成數(shù)據(jù)集成過程中的關鍵問題2.數(shù)據(jù)冗余和相關分析76(1)標稱數(shù)據(jù)的

相關檢驗(2)數(shù)值數(shù)據(jù)的相關系數(shù)(3)數(shù)值數(shù)據(jù)的協(xié)方差3.數(shù)據(jù)集成77利用Python計算屬性間的相關性。In[22]:importpandasaspdimportnumpyasnpa=[47,83,81,18,72,41,50,66,47,20,96,21,16,60,37,59,22,16,32,63]b=[56,96,84,21,87,67,43,64,85,67,68,64,95,58,56,75,6,11,68,63]data=np.array([a,b]).Tdfab=pd.DataFrame(data,columns=['A','B'])#display(dfab)print('屬性A和B的協(xié)方差:',dfab.A.cov(dfab.B))print('屬性A和B的相關系數(shù):',dfab.A.corr(dfab.B))Out[22]:屬性A和B的協(xié)方差:310.2157894736842屬性A和B的相關系數(shù):0.499248710465243943.數(shù)據(jù)集成數(shù)據(jù)集成過程中的關鍵問題3.元組重復除了檢查屬性的冗余之外,還要檢測重復的元組,如給定唯一的數(shù)據(jù)實體,存在兩個或多個相同的元組。利用Pandas.DataFrame.duplicates方法檢測重復的數(shù)據(jù)利用Pandas.DataFrame.drop_duplicates方法刪除重復的數(shù)據(jù)783.數(shù)據(jù)集成數(shù)據(jù)集成過程中的關鍵問題4.數(shù)據(jù)值沖突檢測與處理數(shù)據(jù)集成還涉及數(shù)據(jù)值沖突的檢測與處理。例如不同學校的學生交換信息時,由于不同學校有各自的課程計劃和評分方案,同一門課的成績所采取的評分分數(shù)也有可能不同,如十分制或百分制。793.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)在實際的數(shù)據(jù)分析中,可能有不同的數(shù)據(jù)來源,因此,需要對數(shù)據(jù)進行合并處理。(1)merge數(shù)據(jù)合并merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False,validate=None)803.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(1)merge數(shù)據(jù)合并81參數(shù)使用說明left參與合并的左側(cè)DataFrameright參與合并的右側(cè)DataFramehow連接方法:inner,left,right,outeron用于連接的列名left_on左側(cè)DataFrame中用于連接鍵的列right_on右側(cè)DataFrame中用于連接鍵的列l(wèi)eft_index左側(cè)DataFrame中行索引作為連接鍵right_index右側(cè)DataFrame中行索引作為連接鍵sort合并后會對數(shù)據(jù)排序,默認為Truesuffixes修改重復名3.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(1)merge數(shù)據(jù)合并82price=pd.DataFrame({'fruit':['apple','grape','orange','orange'],'price':[8,7,9,11]})amount=pd.DataFrame({'fruit':['apple','grape','orange'],'amout':[5,11,8]})display(price,amount,pd.merge(price,amount))3.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(1)merge數(shù)據(jù)合并83merge合并時默認是內(nèi)連接(inner),即返回交集。通過how參數(shù)可以選擇連接方法:左連接(left),右連接(right)和外連接(outer)。【例】左連接。display(pd.merge(price,amount,how='left'))3.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(1)merge數(shù)據(jù)合并84也可以通過多個鍵進行合并?!纠縨erge通過多個鍵合并。In[27]:left=pd.DataFrame({'key1':['one','one','two'],

'key2':['a','b','a'],'value1':range(3)})right=pd.DataFrame({'key1':['one','one','two','two'],

'key2':['a','a','a','b'],'value2':range(4)})display(left,right,pd.merge(left,right,on=['key1','key2'],how='left'))3.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(2)concat數(shù)據(jù)連接如果要合并的DataFrame之間沒有連接鍵,就無法使用merge方法。pandas中的concat方法可以實現(xiàn),默認情況下會按行的方向堆疊數(shù)據(jù)。如果在列向上連接設置axis=1即可。853.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(2)concat數(shù)據(jù)連接86兩個DataFrame的數(shù)據(jù)連接。In[30]:data1=pd.DataFrame(np.arange(6).reshape(2,3),columns=list('abc'))data2=pd.DataFrame(np.arange(20,26).reshape(2,3),columns=list('ayz'))data=pd.concat([data1,data2],axis=0)display(data1,data2,data)3.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(2)concat數(shù)據(jù)連接87指定索引順序。In[31]:importpandasaspds1=pd.Series([0,1],index=['a','b'])s2=pd.Series([2,3,4],index=['a','d','e'])s3=pd.Series([5,6],index=['f','g'])s4=pd.concat([s1*5,s3],sort=False)s5=pd.concat([s1,s4],axis=1,sort=False)s6=pd.concat([s1,s4],axis=1,join='inner',sort=False)display(s5,s6)3.數(shù)據(jù)集成2.利用Pandas合并數(shù)據(jù)(3)combine_first合并數(shù)據(jù)88如果需要合并的兩個DataFrame存在重復索引,則使用merge和concat都無法正確合并,此時需要使用combine_first方法。4.數(shù)據(jù)標準化不同特征之間往往具有不同的量綱,由此造成數(shù)值間的差異很大。因此為了消除特征之間量綱和取值范圍的差異可能會造成的影響,需要對數(shù)據(jù)進行標準化處理。數(shù)據(jù)標準化(DataStandardization)一直是一項重要的處理流程。一般將數(shù)據(jù)標準化放在預處理過程中,作為一項通用技術(shù)而存在。機器學習中有部分模型是基于距離度量進行模型預測和分類的。由于距離對特征之間不同取值范圍非常敏感,所以基于距離度量的模型是十分有必要做數(shù)據(jù)標準化處理的。894.數(shù)據(jù)標準化離差標準化數(shù)據(jù)離差標準化是對原始數(shù)據(jù)所做的一種線性變換,將原始數(shù)據(jù)的數(shù)值映射到[0,1]區(qū)間。消除大單位和小單位的影響(消除量綱)變異大小的差異影響;90defMinMaxScale(data):

data=(data-data.min())/(data.max()-data.min())

returndatax=np.array([[1.,-1.,

2.],[2.,

0.,

0.],[0.,

1.,-1.]])print('原始數(shù)據(jù)為:\n',x)x_scaled=MinMaxScale(x)print('標準化后矩陣為:\n',x_scaled,end='\n')原始數(shù)據(jù)為:

[[1.-1.

2.]

[2.

0.

0.]

[0.

1.-1.]]標準化后矩陣為:

[[0.666666670.

1.

]

[1.

0.333333330.33333333]

[0.333333330.666666670.

]]4.數(shù)據(jù)標準化標準差標準化數(shù)據(jù)標準差標準化又稱零均值標準化或z分數(shù)標準化,是當前使用最廣泛的數(shù)據(jù)標準化方法。經(jīng)過該方法處理的數(shù)據(jù)均值為0,標準化為1。消除單位影響及自身變量的差異。91defStandardScale(data):

data=(data-data.mean())/data.std()

returndatax=np.array([[1.,-1.,

2.],[2.,0.,0.],[0.,1.,-1.]])print('原始數(shù)據(jù)為:\n',x)x_scaled=StandardScale(x)print('標準化后矩陣為:\n',x_scaled,end='\n')數(shù)據(jù)歸一化/標準化的目的是獲得某種“無關性”,如偏置無關、尺度無關和長度無關等。當歸一化/標準化方法背后的物理意義和幾何含義與當前問題的需要相契合時,會對解決該問題有正向作用,反之則會起反作用。一般來說,涉及或隱含距離計算以及損失函數(shù)中含有正則項的算法,比如K-Means、KNN、PCA、SVM等,需要進行數(shù)據(jù)標準化,距離計算無關的概率模型和樹模型,如樸素貝葉斯、決策樹和隨機森林等,則不需要進行數(shù)據(jù)標準化。4.數(shù)據(jù)標準化5.數(shù)據(jù)歸約

數(shù)據(jù)歸約(DataReduction)用于在盡可能保持數(shù)據(jù)完整性的基礎上得到數(shù)據(jù)的歸約表示。也就是說,在歸約后的數(shù)據(jù)集上挖掘?qū)⒏行В胰詴a(chǎn)生相同或相似的分析結(jié)果。數(shù)據(jù)歸約包括維歸約、數(shù)量歸約和數(shù)據(jù)壓縮。935.數(shù)據(jù)規(guī)約

維歸約的思路是減少所考慮的隨機變量或?qū)傩缘膫€數(shù),用的方法有屬性子集選擇、小波變換和主成分分析。屬性子集選擇是一種維歸約方法,其中不相關、弱相關或冗余的屬性或維被檢測或刪除。而后兩種方法是原始數(shù)據(jù)變換或投影到較小的空間。945.數(shù)據(jù)規(guī)約

維歸約1.屬性子集選擇屬性子集選擇通過刪除不相關或者冗余屬性(或維)減少數(shù)據(jù)量。(1)逐步向前選擇由空屬性集作為規(guī)約集的起始,迭代確定原屬性集中最好的屬性并添加到規(guī)約集中。(2)逐步向后刪除由整個屬性集開始,在每次迭代中刪除尚在屬性集中最差的屬性。955.數(shù)據(jù)規(guī)約-維歸約

維歸約1.屬性子集選擇(3)逐步向前選擇和逐步向后刪除的組合每一步選擇一個最好的屬性,并在屬性中刪除一個最差的屬性。(4)決策樹歸納由給定的數(shù)據(jù)構(gòu)造決策樹,不出現(xiàn)在樹中的所有屬性假定是不相關的,出現(xiàn)在樹中的屬性形成規(guī)約后的屬性子集。這些方法的約束條件可以不同,可以使用一個度量閾值決定何時終止屬性選擇過程。965.數(shù)據(jù)規(guī)約-維歸約

傅里葉變換-理解傅里葉變換,需要理解兩個核心概念:時域:時間和振幅的關系圖,橫坐標是時間,縱坐標是振幅。頻域:頻率和振幅的關系圖,橫坐標是頻率,縱坐標是振幅。任何「周期(T)「函數(shù),都可以使用」傅立葉級數(shù)展開法」將它們分解為有限或無限個不同「頻率」不同「振幅」的正弦函數(shù)的疊加。傅里葉級數(shù)展開公式如下:如果把函數(shù)看成離散點構(gòu)成的向量,那么就是這些正弦函數(shù)「基向量」的線性組合。975.數(shù)據(jù)規(guī)約-維歸約

傅里葉變換985.數(shù)據(jù)歸約-維歸約

小波變換小波變換是一種新的變換分析方法,它繼承和發(fā)展了短時傅立葉變換局部化的思想,同時又克服了窗口大小不隨頻率變化等缺點,能夠提供一個隨頻率改變的“時間-頻率”窗口,是進行信號時頻分析和處理的理想工具。995.數(shù)據(jù)歸約-維歸約

img=cv.imread("lena_color_256.tif")img=cv.resize(img,(448,448))#將多通道圖像變?yōu)閱瓮ǖ缊D像img=cv.cvtColor(img,cv2.COLOR_BGR2GRAY).astype(np.float32)plt.figure('二維小波一級變換')coeffs=pywt.dwt2(img,'haar')cA,(cH,cV,cD)=coeffs#將各個子圖進行拼接,最后得到一張圖AH=np.concatenate([cA,cH+255],axis=1)VD=np.concatenate([cV+255,cD+255],axis=1)img=np.concatenate([AH,VD],axis=0)#顯示為灰度圖plt.axis('off')plt.imshow(img,'gray')plt.title('result')plt.show()1005.數(shù)據(jù)歸約-維歸約

主成分分析主成分分析(PrincipalComponentAnalysis,PCA)又稱Karhunen-Loeve或K-L方法,用于搜索k個最能代表數(shù)據(jù)的n維正交向量,是最常用的一種降維方法。PCA的主要目的是找出數(shù)據(jù)中最主要的方面代替原始數(shù)據(jù)。具體的,假如數(shù)據(jù)集是m個n維數(shù)據(jù)構(gòu)成,即(x(1),x(2),...,x(m))。希望將這m個數(shù)據(jù)的維度從n維降到n’維,這m個n'維的數(shù)據(jù)集盡可能的代表原始數(shù)據(jù)集。1015.數(shù)據(jù)歸約-維歸約

主成分分析1025.數(shù)據(jù)歸約-維歸約

5.數(shù)據(jù)歸約-維歸約

在scikit-learn中,與PCA相關的類都在sklearn.decomposition包中,其中最常用的PCA類是sklearn.decomposition.PCA。PCA類基本不需要調(diào)參,一般只需要指定需要降維后的維度,或者希望降維后主成分的方差和占原始維度所有特征方差和的比例閾值就可以了。運行sklearn.decomposition.PCA會返回兩個值,一個是explained_variance_,代表降維后的各主成分的方差值,該值越大,說明越是重要的主成分;一個是explained_variance_ratio_,代表降維后的各主成分的方差值占總方差值的比例,該比例越大,則越是重要的主成分。5.數(shù)據(jù)歸約-維歸約

主成分分析Sklearn實現(xiàn)鳶尾花數(shù)據(jù)的

降維,將原來的4維降為2維105importmatplotlib.pyplotaspltfromsklearn.decompositionimportPCAfromsklearn.datasetsimportload_irisdata=load_iris()y=data.targetx=data.datapca=PCA(n_components=2)#加載PCA算法,設置降維后主成分數(shù)目為2reduced_x=pca.fit_transform(x)#對樣本進行降維print(reduced_x)print("前兩個主成分的方差占總方差的比例:\n",pca.explained_variance_ratio_)代碼運行后顯示前兩個主成分的方差占總方差的比例為[0.924618720.05306648],表示第一個特征占了總方差比例的92.4%。5.數(shù)據(jù)歸約-維歸約

5.數(shù)據(jù)歸約-數(shù)量歸約

數(shù)量歸約數(shù)量歸約(NumerosityReduction)用替代的、較小的數(shù)據(jù)表示形式換原始數(shù)據(jù)。這些技術(shù)可以是參數(shù)或者非參數(shù)的。對于參數(shù)方法而言,使用模型估計數(shù)據(jù),使得一般只需要存放模型參數(shù)而不是實際數(shù)據(jù)(離群點需存放),如回歸和對數(shù)-線性模型。存放數(shù)據(jù)規(guī)約表示的非參數(shù)方法包括:直方圖、聚類、抽樣和數(shù)據(jù)立方體聚類1071.回歸和對數(shù)線性模型回歸和對數(shù)模型可以用來近似給定的數(shù)據(jù)。回歸和對數(shù)線性模型可以用來近似給定的數(shù)據(jù)。在(簡單)線性模型中,對數(shù)據(jù)擬合得到一條直線,多元回歸是(簡單)線性回歸的擴展,用兩個或多個自變量的線性函數(shù)對因變量y建模。5.數(shù)據(jù)歸約-數(shù)量歸約

2.直方圖將直方圖中桶的個數(shù)由觀測值的數(shù)量n減少到k個,使數(shù)據(jù)變成一塊一塊的呈現(xiàn)。直方圖使用分箱來近似數(shù)據(jù)分布。用直方圖規(guī)約數(shù)據(jù),就是將直方圖中的桶的個數(shù)由觀測值的數(shù)量n減少到k個,使得數(shù)據(jù)變成一塊一塊的呈現(xiàn)。5.數(shù)據(jù)歸約-數(shù)量歸約

3.聚類聚類后用簇中的代表代替實際數(shù)據(jù)。聚類算法是將數(shù)據(jù)劃分為簇,使得簇內(nèi)的數(shù)據(jù)對象盡可能“相似”,而簇間的數(shù)據(jù)對象盡可能“相異”。5.數(shù)據(jù)歸約-數(shù)量歸約

4.抽樣通過選取隨機樣本子集,實現(xiàn)小數(shù)據(jù)代表大數(shù)據(jù)的過程。抽樣過程包括簡單隨機抽樣、簇抽樣和分層抽樣。5.數(shù)據(jù)立方體聚類數(shù)據(jù)立方體是將細粒度的屬性聚集到粗粒度的屬性。5.數(shù)據(jù)歸約-數(shù)量歸約

5.數(shù)據(jù)歸約-數(shù)據(jù)壓縮

數(shù)據(jù)壓縮(DataCompression)使用變換,一遍得到原始數(shù)據(jù)的歸約或“壓縮”表示。如果數(shù)據(jù)可以在壓縮后的數(shù)據(jù)重構(gòu),而不損失信息,則該數(shù)據(jù)歸約被稱為無損的。如果是近似重構(gòu)原數(shù)據(jù),稱為有損的?;谛〔ㄗ儞Q的數(shù)據(jù)壓縮是一種非常重要的有損壓縮方法。1126.數(shù)據(jù)變換和離散化在數(shù)據(jù)預處理過程中,不同的數(shù)據(jù)適合不同的數(shù)據(jù)挖掘算法。數(shù)據(jù)變換是一種將原始數(shù)據(jù)變換成較好數(shù)據(jù)格式的方法,以便作為數(shù)據(jù)處理前特定數(shù)據(jù)挖掘算法的輸入。數(shù)據(jù)離散化是一種數(shù)據(jù)變換的形式。數(shù)據(jù)變換的策略:1.光滑2.屬性構(gòu)造3.聚集4.規(guī)范化5.離散化6.由標稱數(shù)據(jù)產(chǎn)生概念分層113數(shù)據(jù)變換與離散化數(shù)據(jù)變換的策略1.光滑數(shù)據(jù)光滑用于去掉數(shù)據(jù)中的噪聲。常用的數(shù)據(jù)平滑方法有分箱、回歸和聚類等方法。2.屬性構(gòu)造屬性構(gòu)造是通過由給定的屬性構(gòu)造新的屬性并添加到屬性集中,以幫助數(shù)據(jù)挖掘。3.聚集聚集是對數(shù)據(jù)進行匯總或聚集。例如,可以聚集日銷售數(shù)據(jù),計算月和年銷售量。通常,聚集用來為多個抽象層的數(shù)據(jù)分析構(gòu)造數(shù)據(jù)立方體。114數(shù)據(jù)變換與離散化數(shù)據(jù)變換的策略4.規(guī)范化把屬性數(shù)據(jù)按比例縮放,使之落入一個特定的小區(qū)間,如-1.0~1.0。(1)最小-最大規(guī)范化115(2)z分數(shù)規(guī)范化(3)小數(shù)定標數(shù)據(jù)變換與離散化數(shù)據(jù)變換的策略5.離散化116(1)通過分箱離散化分箱是一種基于指定的箱個數(shù)的自頂向下的分裂技術(shù)。例如使用等寬或等頻分箱,然后用箱均值或中位數(shù)替換箱中的每個值,可以將屬性值離散化。分箱對用戶指定的箱個數(shù)很敏感,也易受離群點的影響。數(shù)據(jù)變換與離散化數(shù)據(jù)變換的策略5.離散化117(2)通過直方圖離散化直方圖把屬性A的值劃分為不相交的區(qū)間,稱作桶或箱。可以使用各種劃分規(guī)則定義直方圖。如在等寬直方圖中,將值分成相等分區(qū)或區(qū)間。直方圖分析算法可以遞歸地用于每個分區(qū),自動地產(chǎn)生多級概念分層,直到達到一個預先設定的概念層數(shù),過程終止。(3)通過聚類、決策樹和相關分析離散化數(shù)據(jù)變換與離散化6.由標稱數(shù)據(jù)產(chǎn)生概念分層對于標稱數(shù)據(jù),概念分層可以基于模式定義以及每個屬性的不同值個數(shù)產(chǎn)生。使用概念分層變換數(shù)據(jù)使得較高層的知識模式可以被發(fā)現(xiàn)。它允許在多個抽象層進行挖掘。118Python數(shù)據(jù)變換與離散化

1.數(shù)據(jù)規(guī)范化數(shù)據(jù)分析的預處理除了數(shù)據(jù)清洗、數(shù)據(jù)合并和標準化之外,還包括數(shù)據(jù)變換的過程,如類別型數(shù)據(jù)變換和連續(xù)型數(shù)據(jù)的離散化。119a=[47,83,81,18,72,41]b=[56,96,84,21,87,67]data=np.array([a,b]).Tdfab=pd.DataFrame(data,columns=['A','B'])print('最小-最大規(guī)范化:\n',(dfab-dfab.min())/(dfab.max()-dfab.min()))print('零均值規(guī)范化:\n',(dfab-dfab.mean())/dfab.std())Python數(shù)據(jù)變換與離散化2.類別型數(shù)據(jù)的啞變量處理類別型數(shù)據(jù)是數(shù)據(jù)分析中十分常見的特征變量,但是在進行建模時,Python不能像R那樣去直接處理非數(shù)值型的變量,因此往往需要對這些類別變量進行一系列轉(zhuǎn)換,如啞變量。啞變量(DummyVariables)用以反映質(zhì)的屬性的一個人工變量,是量化了的自變量,通常取值為0或1。Python中利用pandas庫中的get_dummies函數(shù)對類別型特征進行啞變量處理。120Python數(shù)據(jù)變換與離散化2.類別型數(shù)據(jù)的啞變量處理121Python數(shù)據(jù)變換與離散化

3.連續(xù)型變量的離散化數(shù)據(jù)分析和統(tǒng)計的預處理階段,經(jīng)常會碰到年齡、消費等連續(xù)型數(shù)值,而很多模型算法尤其是分類算法都要求數(shù)據(jù)是離散的,因此要將數(shù)值進行離散化分段統(tǒng)計,提高數(shù)據(jù)區(qū)分度。常用的離散化方法主要有等寬法、等頻法和聚類分析法。(1)等寬法Pandas提供了cut函數(shù),可以進行連續(xù)型數(shù)據(jù)的等寬離散化。cut函數(shù)的基礎語法格式為:pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3)122Python數(shù)據(jù)變換與離散化

3.連續(xù)型變量的離散化(1)等寬法

pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3)123參數(shù)名稱說明x接收array或Series,待離散化的數(shù)據(jù)bins接收int、list、array和tuple。若為int指離散化后的類別數(shù)目,若為序列型則表示進行切分的區(qū)間,每兩個數(shù)的間隔為一個區(qū)間right接收boolean,代表右側(cè)是否為閉區(qū)間,默認為Truelabels接收list、array,表示離散化后各個類別的名稱,默認為空retbins接收boolean,代表是否返回區(qū)間標簽,默認為Falseprecision接收int,顯示標簽的精度,默認為3Python數(shù)據(jù)變換與離散化

3.連續(xù)型變量的離散化(1)等寬法124np.random.seed(666)score_list=np.random.randint(25,100,size=10)print('原始數(shù)據(jù):\n',score_list)bins=[0,59,70,80,100]score_cut=pd.cut(score_list,bins)print(pd.value_counts(score_cut))#統(tǒng)計每個區(qū)間人數(shù)原始數(shù)據(jù):

[27705587959855618676](80,100]

4(0,59]

3(59,70]

2(70,80]

1dtype:int64Python數(shù)據(jù)變換與離散化(2)等頻法cut函數(shù)雖然不能夠直接實現(xiàn)等頻離散化,但可以通過定義將相同數(shù)量的記錄放進每個區(qū)間。125In[40]:defSameRateCut(data,k):k=2w=data.quantile(np.arange(0,1+1.0/k,1.0/k))data=pd.cut(data,w)returndataresult=SameRateCut(pd.Series(score_list),3)result.value_counts()Out[40]:(73.0,97.0]5(27.0,73.0]4dtype:int64Python數(shù)據(jù)變換與離散化(3)聚類分析法聚類的方法包括兩步,首先將連續(xù)型數(shù)據(jù)用聚類算法(如K-Means算法等)進行聚類,然后處理聚類得到的簇,為合并到一個簇的連續(xù)型數(shù)據(jù)做同一標記。聚類分析的離散化需要用戶指定簇的個數(shù),用來決定產(chǎn)生的區(qū)間數(shù)。1267.利用sklearn進行數(shù)據(jù)預處理127利用sklearn進行數(shù)據(jù)預處理1.數(shù)據(jù)標準化、平均去除和方差縮放sklearn.preprocessing.scale(X,axis=0,with_mean=True,with_std=True,copy=True)128參數(shù)數(shù)據(jù)類型意義X{array-like,sparsematrix}以此數(shù)據(jù)為中心縮放axisint(0bydefault)軸向設置,置為0,獨立的標準化每個特征,1則標準化每個樣本(即行)with_meanboolean,Truebydefault如果是True,縮放之前先中心化數(shù)據(jù)with_stdboolean,Truebydefault如果是True,以單位方差法縮放數(shù)據(jù)(或者等價地,單位標準差)copyboolean,optional,defaultTrueFalse:原地執(zhí)行行標準化并避免復制利用sklearn進行數(shù)據(jù)預處理129數(shù)據(jù)的標準化、方差和標準差求解示例In[41]:fromsklearnimportpreprocessingimportnumpyasnpX_train=np.array([[1.,-2.,1.5],[2.2,1.3,0.5],[0.3,1.,-1.5]])X_scaled=preprocessing.scale(X_train)print('X_train:\n',X_train)print('X_scaled:\n',X_scaled)print('均值:',X_scaled.mean(axis=0))print('單位方差:',X_scaled.std(axis=0))Out[41]:X_train:[[1.-2.1.5][2.21.30.5][0.31.-1.5]]X_scaled:[[-0.21242964-1.409427721.06904497][1.317063790.805387270.26726124][-1.104634150.60404045-1.33630621]]均值:

[0.0.0.]單位方差:

[1.1.1.]利用sklearn進行數(shù)據(jù)預處理1.數(shù)據(jù)標準化、平均去除和方差縮放preprocessing模塊還提供了一個實用程序類StandardScaler,用以實現(xiàn)TransformerAPI計算訓練集的均值和標準差,以便以后能夠在測試集上重新應用相同的轉(zhuǎn)換。sklearn的轉(zhuǎn)換器通常與分類器、回歸器或者其他的評估器組合以構(gòu)建復合評估器。130利用sklearn進行數(shù)據(jù)預處理131數(shù)據(jù)的標準化計算示例。In[42]:scaler=preprocessing.StandardScaler().fit(X_train)print('scaler.scale_:',scaler.scale_)print('scaler.mean_:',scaler.mean_)scaler.transform(X_train)Out[42]:scaler.scale_:[0.784573491.489966441.24721913]scaler.mean_:[1.166666670.10.16666667]array([[1.,-2.,1.5],[2.2,1.3,0.5],[0.3,1.,-1.5]])利用sklearn進行數(shù)據(jù)預處理14六月2025132然后在新數(shù)據(jù)上使用Scaler實例來像在訓練集上那樣轉(zhuǎn)換它:In[42]X_test=[[-1.,1.,0.]]scaler.transform(X_test)Out[42]array([[-2.76158538,0.60404045,-0.13363062]])通過將with_mean=False或with_std=False傳遞給StandardScaler的構(gòu)造函數(shù),可以禁用置中或縮放。利用sklearn進行數(shù)據(jù)預處理2.特征縮放另一種標準化是特征縮放,使其介于給定的最小最大值之間,通常是0-1之間,或者使每個特征的最大絕對值被縮放當單位大小。(1)一般特征值縮放sklearn.preprocessing.minmax_scale(X,feature_range=(0,1),axis=0,copy=True)min_max_scaler=preprocessing.minmax_scale()X_train_minmax=min_max_scaler.fit_transform(X_train)min_max_scaler.transform(X_test)133利用sklearn進行數(shù)據(jù)預處理數(shù)據(jù)的縮放示例。In[43]:X_train=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])min_max_scaler=preprocessing.MinMaxScaler()X_train_minmax=min_max_scaler.fit_transform(X_train)print('原數(shù)據(jù):\n',X_train)print('歸一化:\n',X_train_minmax)然后可以在新數(shù)據(jù)上使用Scaler實例來像在培訓集上那樣轉(zhuǎn)換它:In[43]:X_test=np.array([[-3.,-1.,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論