《數(shù)據(jù)采集與處理:基于python》 課件 付東普 第6、7章 統(tǒng)計與概率基礎(chǔ)、數(shù)據(jù)清洗與預(yù)處理_第1頁
《數(shù)據(jù)采集與處理:基于python》 課件 付東普 第6、7章 統(tǒng)計與概率基礎(chǔ)、數(shù)據(jù)清洗與預(yù)處理_第2頁
《數(shù)據(jù)采集與處理:基于python》 課件 付東普 第6、7章 統(tǒng)計與概率基礎(chǔ)、數(shù)據(jù)清洗與預(yù)處理_第3頁
《數(shù)據(jù)采集與處理:基于python》 課件 付東普 第6、7章 統(tǒng)計與概率基礎(chǔ)、數(shù)據(jù)清洗與預(yù)處理_第4頁
《數(shù)據(jù)采集與處理:基于python》 課件 付東普 第6、7章 統(tǒng)計與概率基礎(chǔ)、數(shù)據(jù)清洗與預(yù)處理_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六章

統(tǒng)計與概率基礎(chǔ)《數(shù)據(jù)采集與處理:基于Python》2024/5/1112024/5/112教學(xué)目標本章學(xué)習(xí)目標1.了解變量類型及其特點,理解不同類型變量的描述性統(tǒng)計相關(guān)指標和含義,掌握Python計算變量的描述性統(tǒng)計指標常用的numpy和pandas方法;2.了解離散變量和連續(xù)變量相關(guān)的分布函數(shù)及分布圖形的特點,掌握Python常用模塊numpy、scipy、matplotlib用于不同類型變量數(shù)據(jù)的構(gòu)造、分布及可視化的方法;3.了解偏度、峰度的概念及分布特點,理解其計算方法及應(yīng)用。本章提綱1、統(tǒng)計基礎(chǔ)2、概率與分布統(tǒng)計基礎(chǔ)2024/5/113變量類型2024/5/114變量按照取值連續(xù)性可分為離散變量(discretevariables)和連續(xù)變量(continuousvariables)。離散變量的值是離散的,如顏色、正確/錯誤;連續(xù)變量的值是實際數(shù)字,如長度。變量按照測量方法,有以下測量級別?!耦悇e(categorical):無序變量。例如:性別,真假,是否等;顏色:紅色,藍色,綠色等?!裥驍?shù)(ordinal):標度的不同點之間有一定的次序,但沒有相等距離的含義。例如:教育水平:初中,高中,大學(xué)等;李克特量表:1~5反映程度;社會等級:低,中,高等。●區(qū)間(interval):比例尺上連續(xù)的點有相等的差值,但零點的位置是任意的。例如:攝氏或華氏溫標測量的溫度,經(jīng)度等。●比例(ratio):分數(shù)的相對大小和它們之間的差異很重要。0的位置是固定的。描述性統(tǒng)計2024/5/115二、描述性統(tǒng)計在數(shù)據(jù)分析與統(tǒng)計工作中,通常用少量的統(tǒng)計數(shù)據(jù)或圖形來描述數(shù)據(jù)集。假設(shè)有n個樣本x1,x2,…,xn的真實值,則描述性統(tǒng)計有最小值、最大值、中位數(shù)、均值、標準差等,其中均值和標準差分別是描述數(shù)據(jù)集中趨勢和離散程度的最重要的統(tǒng)計測度。描述性統(tǒng)計2024/5/1161.集中趨勢的測度(1)均值。均值也稱為平均數(shù),是統(tǒng)計學(xué)中最常用的統(tǒng)計量,用來表明數(shù)據(jù)中各觀測值相對集中的中心位置,反映現(xiàn)象總體的一般水平或分布的集中趨勢。在統(tǒng)計學(xué)中,算術(shù)平均數(shù)常用于表示統(tǒng)計對象的一般水平,是描述數(shù)據(jù)集中位置的一個統(tǒng)計量。它既可以用來反映一組數(shù)據(jù)的一般情況和平均水平,也可以用來進行不同組數(shù)據(jù)之間的比較,以看出組與組之間的差別。均值包括算術(shù)平均數(shù)、幾何平均數(shù)等,下面簡要介紹。①算術(shù)平均數(shù)。算術(shù)平均數(shù)(arithmeticmean)是一組數(shù)據(jù)中所有數(shù)據(jù)之和除以數(shù)據(jù)個數(shù)所得的結(jié)果,它是反映數(shù)據(jù)集中趨勢的一項指標。計算公式如下:描述性統(tǒng)計2024/5/117加權(quán)平均數(shù)(weightedaverage)是不同比重數(shù)據(jù)的平均數(shù),即把原始數(shù)據(jù)按照合理的比例進行計算。計算公式如下:式中,f1+f2+…+fn=n,f1、f2、…、fn稱作權(quán)重(weight)。算術(shù)平均數(shù)是加權(quán)平均數(shù)的一種特殊情況,即各項的權(quán)重相等時,加權(quán)平均數(shù)就是算術(shù)平均數(shù)。②幾何平均數(shù)。n個觀測值的連乘積的n次方根就是幾何平均數(shù)(geometricmean)。根據(jù)數(shù)據(jù)的條件不同,幾何平均數(shù)有加權(quán)和不加權(quán)之分。(2)中位數(shù)。中位數(shù)(median)又稱中值,是指將統(tǒng)計總體中的各個變量值按大小順序排列起來,形成一個數(shù)列,處于數(shù)列中間位置的變量值就稱為中位數(shù)。假設(shè)有n個數(shù)據(jù),當(dāng)n為偶數(shù)時,中位數(shù)為第n/2個數(shù)和第(n+2)/2個數(shù)的均值;當(dāng)n為奇數(shù)時,中位數(shù)為第(n+1)/2個數(shù)的值。描述性統(tǒng)計2024/5/118(3)眾數(shù)。眾數(shù)(mode)是指在統(tǒng)計分布上具有明顯集中趨勢的數(shù)值,代表數(shù)據(jù)的一般水平。它是一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的數(shù)值,有時在一組數(shù)據(jù)中可以有多個眾數(shù)。示例程序如下:importnumpyasnpimportpandasaspdfromscipyimportstatsAvg_snow=[28.50,76.77,92.00,95.40,90.85,99.66,80.00]#月均降雪列表np.min(Avg_snow),np.max(Avg_snow)#計算最小值和最大值#這些數(shù)值分別對應(yīng)什么月份?imin=np.argmin(Avg_snow) #返回最小值所在索引位置imax=np.argmax(Avg_snow) #返回最大值所在索引位置months=[Oct,Nov,Dec,Jan,Feb,March,Apr]print(imin,imax,months[imin],months[imax])np.mean(Avg_snow) #計算均值np.median(Avg_snow) #計算中位數(shù)population=[30,25,30,40,25,30,28]stats.mode(population) #獲取眾數(shù)描述性統(tǒng)計2024/5/119均值、中位數(shù)和眾數(shù)都是用來刻畫數(shù)據(jù)平均水平的統(tǒng)計量,它們各有特點。對于均值大家比較熟悉,而中位數(shù)刻畫了一組數(shù)據(jù)的中等水平,眾數(shù)刻畫了一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的情況。均值的優(yōu)點之一是,它能夠利用所有數(shù)據(jù)的特征,而且容易計算。另外,在數(shù)學(xué)上,均值是使誤差平方和達到最小的統(tǒng)計量,即利用均值代表數(shù)據(jù)可以使二次損失最小。因此,均值是一個常用的統(tǒng)計量。但是均值也有不足之處,正是因為它利用了所有數(shù)據(jù)的信息,因此容易受極端數(shù)據(jù)的影響。中位數(shù)和眾數(shù)這兩個統(tǒng)計量的優(yōu)點是能夠避免極端數(shù)據(jù)的干擾,但缺點是沒有完全利用數(shù)據(jù)反映出來的信息。因此,每個統(tǒng)計量都有各自的特點,需要根據(jù)實際問題來選擇合適的統(tǒng)計量。描述性統(tǒng)計2024/5/11102.離散程度的測度測度數(shù)據(jù)離散程度的統(tǒng)計量有方差、標準差、變異系數(shù)、極差、離差平方和等。(1)方差和標準差。方差和標準差量化了一組數(shù)據(jù)值的變化量或分散度。方差(variance)是對離差平方和求均值,消除了樣本個數(shù)的影響,是測度數(shù)據(jù)離散程度的指標,用σ2表示。標準差(standarddeviation,簡稱std.dev.)是方差的算術(shù)平方根,用σ表示。標準差能反映一組數(shù)據(jù)的離散程度,均值相同的兩組數(shù)據(jù),標準差未必相同。相關(guān)概念與計算公式如下。①總體標準差。由于方差含有數(shù)據(jù)離差的平方,與觀測值本身相差太大,人們難以直觀地衡量,所以常用方差的算術(shù)平方根——標準差來衡量。描述性統(tǒng)計2024/5/1111總體標準差與正態(tài)分布有密切聯(lián)系:在正態(tài)分布中,均值加減1個標準差對應(yīng)正態(tài)分布曲線下68.26%的面積,均值加減1.96個標準差對應(yīng)正態(tài)分布曲線下95%的面積。②樣本標準差。樣本量越大,越能反映真實的情況,但算術(shù)平均數(shù)卻忽略了這個問題。對此,統(tǒng)計學(xué)上早有考慮,在統(tǒng)計學(xué)中,樣本方差是離差平方和除以自由度(n-1),故樣本標準差的計算公式如下:③標準誤差。標準誤差表示的是抽樣誤差。從一個總體中可以抽取出無數(shù)個樣本,每個樣本都是對總體的估計。標準誤差反映的就是當(dāng)前樣本對總體的估計情況,是用樣本標準差除以樣本量的平方根得到的??梢钥闯?標準誤差更多的是受樣本量的影響,樣本量越大,標準誤差就越小,抽樣誤差也就越小,表明所抽取的樣本能夠較好地代表總體。標準誤差的計算公式如下:描述性統(tǒng)計2024/5/1112(2)變異系數(shù)。標準差能客觀準確地反映一組數(shù)據(jù)的離散程度,但是對于不同的項目或同一項目的不同樣本,標準差就缺乏可比性了,因此又引入了變異系數(shù)。這樣,一組數(shù)據(jù)的均值及標準差可以同時作為參考的依據(jù)。如果數(shù)值的中心以均值來測度,則標準差為統(tǒng)計分布最“自然”的測度。變異系數(shù)的計算公式如下:(3)極差。極差又稱全距,即最大值-最小值。最直接、最簡單的方法就是通過極差來評價一組數(shù)據(jù)的離散程度,如比賽中去掉最高分和最低分就是極差的具體應(yīng)用。描述性統(tǒng)計2024/5/1113(4)離差平方和。由于誤差具有不可控性,只用兩個數(shù)據(jù)來評價一組數(shù)據(jù)是不科學(xué)的,所以人們在要求更高的領(lǐng)域不使用極差來評價。其實,離散程度就是數(shù)據(jù)偏離均值的程度,因此將數(shù)據(jù)與均值之差(稱為離差)加起來就能反映離散程度,和越大,離散程度也就越大。但由于偶然誤差是呈正態(tài)分布的,離差有正有負,對于大樣本,離差的代數(shù)和為零。為了避免正負問題,在數(shù)學(xué)上有兩種方法:一種是取絕對值,即離差絕對值之和;而為了避免符號問題,數(shù)學(xué)上最常用的是另一種方法,即離差取平方,這樣就都轉(zhuǎn)成了非負數(shù)。于是,離差平方和成為評價離散程度的又一個指標。示例程序如下:#人口普查數(shù)據(jù)統(tǒng)計d1=pd.read_csv("adult.data",sep=",",names=("age","type_employer","fnlwgt","education","education_num","marital","occupation","relationship","race","sex","capital_gain","capital_loss","hr_per_week","country","income"))print(d1)#DataFrame對象的描述性統(tǒng)計方法,缺省時顯示數(shù)值型數(shù)據(jù)的描述性統(tǒng)計量d1.describe()描述性統(tǒng)計2024/5/1114運行結(jié)果如下:描述性統(tǒng)計2024/5/1115可以對DataFrame對象的某列進行描述性統(tǒng)計。注意:字符型數(shù)據(jù)的描述性統(tǒng)計量與數(shù)值型數(shù)據(jù)的不同,如統(tǒng)計量中有總個數(shù)、非重復(fù)值個數(shù)、最大頻度等。字符型數(shù)據(jù)的描述性統(tǒng)計結(jié)果示例如下:描述性統(tǒng)計2024/5/11163.分位數(shù)分位數(shù)(quantile),亦稱分位點,是指將一個隨機變量的概率分布范圍等分為幾個數(shù)值點,常用的有中位數(shù)(即二分位數(shù))、四分位數(shù)、百分位數(shù)等。分位數(shù)就是連續(xù)分布函數(shù)中的一個點,這個點對應(yīng)概率p。若概率0<p<1,隨機變量X的概率分布的分位數(shù)zα就是滿足條件P(X≤zα)=α的實數(shù)。常見的分位數(shù)有:(1)二分位數(shù)。計算有限個數(shù)的數(shù)據(jù)的二分位數(shù)的方法是:把所有同類數(shù)據(jù)按大小順序排列,如果數(shù)據(jù)的個數(shù)是奇數(shù),則中間的數(shù)據(jù)就是這組數(shù)據(jù)的中位數(shù);如果數(shù)據(jù)的個數(shù)是偶數(shù),則中間兩個數(shù)據(jù)的算術(shù)平均數(shù)就是這組數(shù)據(jù)的中位數(shù)。一組數(shù)據(jù)中,最多有一半的數(shù)據(jù)小于中位數(shù),也最多有一半的數(shù)據(jù)大于中位數(shù)。如果大于和小于中位數(shù)的數(shù)據(jù)個數(shù)均少于一半,那么該組數(shù)據(jù)中必有若干個數(shù)據(jù)等于中位數(shù)。描述性統(tǒng)計2024/5/1117(2)四分位數(shù)。四分位數(shù)(quartile)是分位數(shù)的一種,即把所有數(shù)據(jù)從小到大排列并分成四等份,處于三個分割點位置的數(shù)據(jù)就是四分位數(shù)。第一四分位數(shù)(Q1),又稱下四分位數(shù),等于該樣本中所有數(shù)據(jù)從小到大排列后第25%位置的數(shù)據(jù)。第二四分位數(shù)(Q2),又稱中位數(shù),等于該樣本中所有數(shù)據(jù)從小到大排列后第50%位置的數(shù)據(jù)。第三四分位數(shù)(Q3),又稱上四分位數(shù),等于該樣本中所有數(shù)據(jù)從小到大排列后第75%位置的數(shù)據(jù)。第三四分位數(shù)與第一四分位數(shù)的差又稱四分位距。(3)百分位數(shù)。如果將一組數(shù)據(jù)從小到大排序,并計算相應(yīng)的累計百分位,則某一百分位所對應(yīng)的數(shù)據(jù)就稱為這一百分位的百分位數(shù)(percentile)。描述性統(tǒng)計2024/5/1118示例程序如下:#percentile為百分位函數(shù)ages=d1["age"].tolist()print(np.percentile(ages,25))print(np.percentile(ages,75))#方差與標準差print(np.var(ages))print(np.std(ages))描述性統(tǒng)計2024/5/11194.協(xié)方差與相關(guān)性協(xié)方差(covariance)用于衡量兩個變量的總體誤差。如果兩個變量的變化趨勢一致,即兩個變量都大于自身的期望值,那么兩個變量之間的協(xié)方差就是正值;如果兩個變量的變化趨勢相反,即其中一個變量大于自身的期望值,另一個變量小于自身的期望值,那么兩個變量之間的協(xié)方差就是負值。協(xié)方差的計算公式如下:式中,μx與μy分別是x和y的均值。相關(guān)性(correlation)是指兩個變量的關(guān)聯(lián)程度。一般從散點圖上可以觀察到兩個變量之間的關(guān)系為以下三種關(guān)系之一:正相關(guān)、負相關(guān)、不相關(guān)。如果一個變量的高值對應(yīng)另一個變量的高值,低值對應(yīng)低值,那么這兩個變量呈正相關(guān);反之,如果一個變量的高值對應(yīng)另一個變量的低值,那么這兩個變量呈負相關(guān);如果兩個變量間沒有關(guān)系,即一個變量的變化對另一個變量沒有明顯影響,那么這兩個變量不相關(guān)。描述性統(tǒng)計2024/5/1120相關(guān)性的計算公式如下:式中,σx和σy分別是x和y的標準差。示例程序如下:運行結(jié)果如下:#在人口普查數(shù)據(jù)中,年齡age與hr_per_week的相關(guān)性hr=d1["hr_per_week"].tolist()#corrcoef函數(shù)返回相關(guān)系數(shù)矩陣,cov函數(shù)返回協(xié)方差矩陣print(np.corrcoef(ages,hr))np.cov(ages,hr)概率與分布2024/5/1121概率與分布2024/5/1122生活中,每時每刻都有各種事件發(fā)生,如硬幣拋擲、公交車到站等。事件發(fā)生之后,特定的結(jié)果便確定了,如落地的硬幣是正面還是反面朝上。在事件發(fā)生之前,我們只能討論結(jié)果的可能性。概率分布用于描述我們對每種結(jié)果出現(xiàn)概率的想法,有時我們更關(guān)心概率分布,而不是最可能出現(xiàn)的單個結(jié)果。離散型隨機變量的概率分布2024/5/11231.伯努利分布伯努利分布(Bernoullidistribution)以伯努利(JacobBernoulli)的名字命名,它是離散型隨機變量的概率分布,其中成功(值為1)的概率為p,失敗(值為0)的概率q=1-p。伯努利分布p=0.5(意味著q=0.5)描述了一種“公平”的拋硬幣游戲,其中1和0分別代表“正面”和“反面”。如果硬幣是不均勻的,則p≠0.5。伯努利變量的均值是p,方差是p(1-p)??茖W(xué)計算包scipy提供了不同類型分布的模塊,可進行基本的統(tǒng)計描述和概率計算,示例程序如下:離散型隨機變量的概率分布2024/5/1124importscipyasscfromscipy.statsimportbernoullifromscipy.statsimportbinomfromscipy.statsimportnormimportmatplotlib.pyplotasplt#繪圖嵌入網(wǎng)頁并正常顯示%matplotlibinlineplt.rcParams[figure.figsize]=(10,6)#設(shè)置圖形大小:長×寬plt.style.use(ggplot) #設(shè)置圖形樣式n=1000#rvs函數(shù)通過概率p和規(guī)模size參數(shù)生成服從伯努利分布的樣本coin_flips=bernoulli.rvs(p=0.5,size=n)print(coin_flips)print(sum(coin_flips))print(sum(coin_flips)/n)#如果硬幣再拋擲更多次,概率p則趨近于0.5n=1000000coin_flips=bernoulli.rvs(p=0.5,size=n)print(sum(coin_flips)/n)離散型隨機變量的概率分布2024/5/11252.二項分布帶有參數(shù)n和p的二項分布是n個伯努利隨機變量匯總結(jié)果的離散概率分布。簡單起見,取p=0.5,使得伯努利分布描述了硬幣拋擲的結(jié)果。對于每次拋擲,正面的概率是p(所以背面的概率是q=1-p),但我們不記錄拋擲的次數(shù),只記錄總共有多少正面/反面。二項分布(binomialdistribution)可以看成一組獨立的伯努利隨機變量的匯總,因此其均值是np,方差是np(1-p)。下面的代碼相當(dāng)于拋擲一枚均勻(p=0.5)的硬幣10次,然后計算正面的次數(shù),重復(fù)這個過程1000000次。離散型隨機變量的概率分布2024/5/1126p=0.5n=10#binom中的rvs函數(shù)返回符合指定要求的正態(tài)分布數(shù)組bin_vars=binom.rvs(n=n,p=p,size=1000000)print(bin_vars[:100])bins=np.arange(12)-.5#hist函數(shù)中的normed參數(shù)在matplotlib3.1中可能被density參數(shù)替代plt.hist(bin_vars,bins=bins,normed=True)#等價于plt.hist(bin_vars,bins=bins,density=True)plt.title("二項分布隨機變量的直方圖")plt.xlim([-.5,10.5])#設(shè)置x軸的取值區(qū)間plt.show() #見圖6-1離散型隨機變量的概率分布2024/5/11273.離散型隨機變量和概率質(zhì)量函數(shù)二項分布隨機變量和伯努利分布隨機變量都是離散型隨機變量的例子,因為它們只能取離散值。伯努利分布隨機變量可以取0或1,二項分布隨機變量只能取0,1,…,n。我們可以計算變量取每個值的概率,即概率質(zhì)量函數(shù)(probabilitymassfunction,pmf)。對于伯努利分布隨機變量,概率質(zhì)量函數(shù)設(shè)為:對于二項分布隨機變量,概率質(zhì)量函數(shù)設(shè)為:式中,

,

是在n次拋擲中有k次正面朝上。對于公平的硬幣,有p=0.5,并且f(k)=

。概率質(zhì)量函數(shù)可以由scipy庫繪制,示例程序如下:離散型隨機變量的概率分布2024/5/1128#pmf函數(shù)為概率質(zhì)量函數(shù),返回指定取值的概率f=lambdak:binom.pmf(k,n=n,p=p)x=np.arange(n+1);plt.plot(x,f(x),*-)#參數(shù):x軸,y軸,線型plt.title("二項分布隨機變量的概率質(zhì)量函數(shù)")plt.xlim([0,n])plt.show() 連續(xù)型隨機變量的概率分布2024/5/1129正態(tài)隨機變量是連續(xù)型隨機變量的一個例子。正態(tài)隨機變量可以取任意實數(shù),但取有些實數(shù)的可能性更大。正態(tài)分布(normaldistribution)也稱為高斯分布(Gaussiandistribution),其概率密度函數(shù)(probabilitydensityfunction,PDF)為:連續(xù)型隨機變量的概率分布2024/5/1130Python中生成正態(tài)分布數(shù)據(jù)的方法如下?!駈umpy.random.randn(d0,d1,…,dn)?!駈umpy.random.normal(loc=0.0,scale=1.0,size=None):normal函數(shù)創(chuàng)建均值為loc(即mu)、標準差為scale(即sigma)、大小為size的數(shù)組。示例程序如下:mu=0#均值sigma=1 #標準差x=np.arange(mu-4*sigma,mu+4*sigma,0.001)#生成均值左右4個標準差之間、步長為0.001的數(shù)#binom模塊的pdf函數(shù),即概率密度函數(shù)pdf=norm.pdf(x,loc=mu,scale=sigma)plt.plot(x,pdf,linewidth=2,color=k)連續(xù)型隨機變量的概率分布2024/5/1131plt.plot(x,pdf,linewidth=2,color=k)#線寬為2,顏色設(shè)置為黑色x2=np.arange(mu-sigma,mu+sigma,0.001)#fill_between函數(shù)將對x軸和y軸曲線下方區(qū)域按照指定顏色和透明度進行填充plt.fill_between(x2,y1=norm.pdf(x2,loc=mu,scale=sigma),facecolor=red,alpha=0.5)plt.show()連續(xù)型隨機變量的概率分布2024/5/1132即在68%的情況下,這個正態(tài)隨機變量的值在(μ-σ)與(μ+σ)之間。先采樣1000000個正態(tài)隨機變量,然后繪制直方圖,看一下具體情況。連續(xù)型隨機變量的概率分布2024/5/1133示例程序如下:norm_vars=norm.rvs(loc=mu,scale=sigma,size=1000000)print(norm_vars[:100])#繪制直方圖,一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況,bins參數(shù)指定分段或分箱(等頻)#為了構(gòu)建直方圖,第一步是將值的范圍分段,即將整個值的范圍分成一系列間隔,然后計算每個間隔中有多少值plt.hist(norm_vars,bins=100,density=True)plt.title("正態(tài)分布隨機變量的直方圖")plt.show()連續(xù)型隨機變量的概率分布2024/5/11342.均勻分布均勻分布(uniformdistribution)是對稱概率分布,在相同長度間隔上的分布概率是相等的。均勻分布由a和b兩個參數(shù)定義,它們是數(shù)軸上的最小值和最大值,通??s寫為U(a,b)。(1)概率密度函數(shù)。均勻分布的概率密度函數(shù)為:a和b兩個邊界處的f(x)的值通常是不重要的,因為它們不改變?nèi)魏蝔(x)dx的積分值。概率密度函數(shù)有時為0,有時為1/(b-a)。在傅里葉分析中,可以將f(a)或f(b)的值取為1/(2(b-a)),因為許多這種均勻函數(shù)的積分變換的逆變換都是函數(shù)本身。連續(xù)型隨機變量的概率分布2024/5/1135(2)累積分布函數(shù)。累積分布函數(shù)為:(3)Python相關(guān)模塊。均勻分布的語法格式如下:numpy.random.uniform(low=0.0,high=1.0,size=None)作用是:在low至high的范圍內(nèi),生成大小為size的均勻分布的隨機數(shù)。示例程序如下:連續(xù)型隨機變量的概率分布2024/5/1136importnumpyasnpimportmatplotlib.pyplotaspltfromscipyimportstatsnp.random.seed(20200614)a=0b=100size=50000x=np.random.uniform(a,b,size=size)print(np.all(x>=0))#返回結(jié)果:Trueprint(np.all(x<100)) #返回結(jié)果:Truey=(np.sum(x<50)-np.sum(x<10))/sizeprint(y) #返回結(jié)果:0.40144plt.hist(x,bins=20)plt.show()#見圖6-6a=stats.uniform.cdf(10,0,100)b=stats.uniform.cdf(50,0,100)print(b-a) #返回結(jié)果:0.4其他概率分布2024/5/11371.泊松分布泊松分布(Poissondistribution)是概率論與數(shù)理統(tǒng)計中常見的一種離散概率分布(discreteprobabilitydistribution)。該分布在1838年被法國數(shù)學(xué)家泊松(Siméon-DenisPoisson)發(fā)現(xiàn)并以其名字命名,主要用于估計某個時間段某事件發(fā)生的概率。(1)分布特點。泊松分布的概率密度函數(shù)為:式中,參數(shù)λ是單位時間(或單位面積)內(nèi)隨機事件的平均發(fā)生次數(shù)。泊松分布的期望和方差均為λ。(2)泊松分布與二項分布的關(guān)系。當(dāng)二項分布的n很大而p很小時,泊松分布與二項分布近似,其中λ=np。通常當(dāng)n≥20,p≤0.05時,就可以用泊松分布近似地計算二項分布。事實上,泊松分布正是由二項分布推導(dǎo)而來的。其他概率分布2024/5/1138(3)應(yīng)用場景。在實際中,當(dāng)一個隨機事件(例如某電話交換臺收到的呼叫、來到某公共汽車站的乘客、某放射性物質(zhì)發(fā)射出的粒子、顯微鏡下某區(qū)域中的白細胞,等等)以固定的平均瞬時速率λ(或稱密度)隨機且獨立地出現(xiàn)時,這個事件在單位時間(面積或體積)內(nèi)出現(xiàn)的次數(shù)或個數(shù)就近似地服從泊松分布P(λ)。因此,泊松分布在管理科學(xué)、運籌學(xué)以及自然科學(xué)的某些問題中占有重要的地位。(4)Python相關(guān)模塊。Python中的“numpy.random.poisson(lam=1.0,size=None)”表示對一個泊松分布進行采樣,lam表示一個度量單位內(nèi)發(fā)生事件的平均值,size表示采樣的次數(shù),函數(shù)的返回值表示一個度量單位內(nèi)事件發(fā)生的次數(shù)。Python示例:假定某航空公司訂票處平均每小時接到42次訂票電話,那么10分鐘內(nèi)恰好接到6次電話的概率是多少?其他概率分布2024/5/1139importnumpyasnpfromscipyimportstatsimportmatplotlib.pyplotaspltplt.rcParams[font.sans-serif]=[SimHei]plt.rcParams[axes.unicode_minus]=Falsenp.random.seed(20200605)lam=42/6#平均值:平均每10分鐘接到42/6次訂票電話size=50000x=np.random.poisson(lam,size) #模擬服從泊松分布的50000個隨機變量#或者x=stats.poisson.rvs(lam,size=size)print(np.sum(x==6)/size)#返回結(jié)果:0.14988plt.hist(x)plt.xlabel(每10分鐘接到訂票電話的次數(shù))plt.ylabel(50000個樣本中出現(xiàn)的次數(shù))plt.show() #見圖6-7x=stats.poisson.pmf(6,lam)#用概率質(zhì)量函數(shù)poisson.pmf(k,mu)求對應(yīng)分布的概率print(x) #返回結(jié)果:0.14900277967433773其他概率分布2024/5/1140指數(shù)分布(exponentialdistribution),也稱負指數(shù)分布,是描述泊松過程(即事件以恒定平均速率連續(xù)且獨立發(fā)生)中事件之間的時間的概率分布。它是伽馬分布的一個特殊情況,是幾何分布的連續(xù)模擬,具有無記憶的關(guān)鍵性質(zhì)。除了用于分析泊松過程外,指數(shù)分布還可以在其他各種環(huán)境中用到。指數(shù)分布與分布指數(shù)族的分類不同,后者是將指數(shù)分布作為其成員之一的大類概率分布,也包括正態(tài)分布、二項分布、伽馬分布、泊松分布等。指數(shù)分布的一個重要特征是無記憶性(memorylessproperty),又稱遺失記憶性。這表示如果一個隨機變量呈指數(shù)分布,當(dāng)s,t>0時,有P(T>t+sT>t)=P(T>s)。即如果T是某一元件的壽命,已知元件使用了t小時,它總共使用至少s+t小時的條件概率與從開始使用時算起它使用至少s小時的概率相等。其他概率分布2024/5/1141(1)概率密度函數(shù)。指數(shù)分布的概率密度函數(shù)如下:式中,λ(λ>0)是分布的一個參數(shù),常被稱為率參數(shù)(rateparameter),即單位時間內(nèi)發(fā)生某事件的次數(shù)。指數(shù)分布的區(qū)間是[0,+∞)。如果一個隨機變量X呈指數(shù)分布,則可以寫為X~E(λ)。不同教材中有不同的寫法,令θ=1/λ,因此指數(shù)分布的概率密度函數(shù)、分布函數(shù)以及期望和方差有兩種寫法。其概率密度函數(shù)還可表示為:式中,θ(θ>0)為常數(shù),稱X服從參數(shù)為θ的指數(shù)分布。其他概率分布2024/5/1142(2)分布函數(shù)。指數(shù)分布的分布函數(shù)由下式給出:還可表示為:(3)期望與方差。期望:例如,如果平均每小時接到兩次電話,那么預(yù)期等待每次電話的時間是半小時。方差:(4)Python相關(guān)模塊。Python中指數(shù)分布的語法格式如下:numpy.random.exponential(scale=1.0,size=None)其他概率分布2024/5/1143importnumpyasnpimportmatplotlib.pyplotaspltfromscipyimportstatsnp.random.seed(20200614)lam=7size=50000x=np.random.exponential(1/lam,size)y1=(np.sum(x<1/7))/sizey2=(np.sum(x<2/7))/sizey3=(np.sum(x<3/7))/sizeprint(y1)#返回結(jié)果:0.63218print(y2)#返回結(jié)果:0.86518print(y3)#返回結(jié)果:0.95056plt.hist(x,bins=20)plt.show() #見圖6-8y1=stats.expon.cdf(1/7,scale=1/lam)y2=stats.expon.cdf(2/7,scale=1/lam)y3=stats.expon.cdf(3/7,scale=1/lam)print(y1)#返回結(jié)果:0.6321205588285577print(y2)#返回結(jié)果:0.8646647167633873print(y3)#返回結(jié)果:0.950212931632136其他概率分布2024/5/11443.超幾何分布超幾何分布(hypergeometricdistribution)是一種離散概率分布。它描述了從有限N個物品(其中包含M個指定種類的物品)中抽取n個物品,成功抽出指定種類的物品的次數(shù)(無放回)。之所以稱為超幾何分布,是因為其形式與“超幾何函數(shù)”的級數(shù)展開式的系數(shù)有關(guān)。上述超幾何分布可記作X~H(N,n,M)。(1)定義。在產(chǎn)品抽樣檢查中,假定N件產(chǎn)品中有M件不合格品,即不合格率p=M/N。從產(chǎn)品中隨機抽取n件做檢查,發(fā)現(xiàn)k件不合格品的概率為:亦可寫作:其他概率分布2024/5/1145與式(6-20)不同的是,該式中M可為任意實數(shù),而式(6-20)中M為非負整數(shù)。為古典概型的組合形式,a為下限,b為上限,此時稱隨機變量X服從超幾何分布。需要注意的是,超幾何分布的模型是無放回抽樣。(2)Python相關(guān)模塊。“numpy.random.hypergeometric(ngood,nbad,nsample,size=None)”表示對一個超幾何分布進行抽樣,ngood表示總體中具有成功標志的元素個數(shù),nbad表示總體中不具有成功標志的元素個數(shù),ngood+nbad表示總體樣本容量,nsample表示抽取元素的次數(shù)(小于或等于總體樣本量),size表示抽樣的次數(shù),函數(shù)的返回值表示抽取的nsample個元素中具有成功標志的元素個數(shù)。Python示例:20只動物中有7只狗,計算抽取12只動物,其中有3只狗的概率(無放回抽樣)。其他概率分布2024/5/1146np.random.seed(20200605)size=500000x=np.random.hypergeometric(ngood=7,nbad=13,nsample=12,size=size)print(np.sum(x==3)/size)#返回結(jié)果:0.198664plt.hist(x,bins=8)plt.xlabel(狗的數(shù)量)plt.ylabel(500000個樣本中出現(xiàn)的次數(shù))plt.title(超幾何分布,fontsize=20)plt.show()#見圖6-9x=range(8)"""hypergeom.pmf(k,M,n,N,loc)函數(shù)的參數(shù):M為總體樣本量,n為總體中具有成功標志的元素個數(shù);N,k表示抽取的N個元素中k個有成功標志"""s=stats.hypergeom.pmf(k=x,M=20,n=7,N=12)#計算k次成功的概率print(np.round(s,3))#返回結(jié)果:[0.0.0040.0480.1990.3580.2860.0950.01]偏度與峰度2024/5/11471.偏度偏度(skewness),亦稱偏態(tài)、偏態(tài)系數(shù),用于度量統(tǒng)計數(shù)據(jù)分布的偏斜方向和程度,是描述統(tǒng)計數(shù)據(jù)分布非對稱程度的數(shù)字特征,表征了概率分布密度曲線相對于均值的不對稱程度,直觀來看就是概率密度曲線尾部的相對長度。偏度是樣本的三階標準化矩,計算公式如下:偏度與峰度2024/5/1148正態(tài)分布的偏度為0,兩側(cè)尾部長度對稱。若用S表示偏度,則S<0表示分布為負偏,也稱左偏,此時位于均值左邊的數(shù)據(jù)比右邊少,直觀表現(xiàn)為左尾比右尾要長,因為有少數(shù)變量值很小,使曲線左尾拖長;S>0表示分布為正偏,也稱右偏,此時位于均值右邊的數(shù)據(jù)比左邊少,直觀表現(xiàn)為右尾比左尾要長,因為有少數(shù)變量值很大,使曲線右尾拖長;S接近于0則表示分布是對稱的。三種不同偏度類型分布的圖例如圖6-10所示。若已知分布有可能在偏度上偏離正態(tài)分布,則可用偏離來檢驗分布的正態(tài)性:右偏時,一般均值>中位數(shù)>眾數(shù);左偏時則相反,即眾數(shù)>中位數(shù)>均值;正態(tài)分布情況下,三者相等。偏度與峰度2024/5/11492.峰度峰度(kurtosis)又稱峰態(tài)系數(shù),是用于描述數(shù)據(jù)分布陡峭或平緩的統(tǒng)計量,可用于表征概率密度曲線在均值處峰值的高低。直觀來看,峰度反映了峰部的尖度。對于隨機變量X,其峰度為樣本的四階標準中心矩,計算公式如下:峰度用K表示,正態(tài)分布的峰度為3。一般而言,以正態(tài)分布為參照,峰度可以描述分布形態(tài)的陡緩程度,若K<3,則稱分布的峰比正態(tài)分布平坦;若K>3,則稱分布的峰比正態(tài)分布陡峭。若已知分布有可能在峰度上偏離正態(tài)分布,則可用峰度來檢驗分布的正態(tài)性。偏度與峰度2024/5/1150在實際應(yīng)用中,通常將峰度值做減3處理,使得正態(tài)分布的峰度為0。因此,在使用統(tǒng)計軟件進行計算時,應(yīng)注意該軟件默認的峰度計算公式。峰度為0表示該總體數(shù)據(jù)分布與正態(tài)分布的陡緩程度相同;峰度大于0表示該總體數(shù)據(jù)分布與正態(tài)分布相比較陡峭,為尖頂峰;峰度小于0表示該總體數(shù)據(jù)分布與正態(tài)分布相比較平緩,為平頂峰。峰度的絕對值越大,表示其分布形態(tài)的陡緩程度與正態(tài)分布相比的差異越大。不同峰度的示例如圖6-11所示。偏度與峰度2024/5/11513.Python相關(guān)模塊在Python中,可以使用scipy中stats模塊的skew和kurtosis函數(shù)分別計算數(shù)組的偏度和峰度;pandas的DataFrame對象也自帶相應(yīng)函數(shù)。示例程序如下:fromscipyimportstats#scipy中的stats可以用于統(tǒng)計推斷importnumpyasnpfromscipy.statsimportnormxx=np.random.randn(100)mu=np.mean(xx,axis=0) #若axis=0,則輸出矩陣是1行,求每列的均值;若axis=1,則輸出矩陣是1列,求每行的均值sigma=np.std(xx,axis=0) #求標準差skew=stats.skew(xx) #求偏度kurtosis=stats.kurtosis(xx) #求峰度print(xx,\n)print(mu,sigma,skew,kurtosis)#繪制概率密度曲線xx.sort()pdf=norm.pdf(xx,loc=mu,scale=sigma)plt.plot(xx,pdf,linewidth=2,color=k)plt.show() 52Question?問題?2024/5/11第七章

數(shù)據(jù)清洗與預(yù)處《數(shù)據(jù)采集與處理:基于Python》2024/5/11532024/5/1154教學(xué)目標本章學(xué)習(xí)目標1.了解數(shù)據(jù)清洗與預(yù)處理的相關(guān)概念、方法和技術(shù),理解數(shù)據(jù)預(yù)處理的相關(guān)步驟和重要作用;2.了解異常數(shù)據(jù)、缺失數(shù)據(jù)及噪聲數(shù)據(jù)的處理方法和技術(shù),掌握Python相關(guān)模塊的使用方法;3.了解數(shù)據(jù)整合面臨的問題和解決方法,掌握Python模塊pandas常用的數(shù)據(jù)連接與合并方法;4.了解數(shù)據(jù)變換常用方法的原理和特點,熟悉Python數(shù)據(jù)變換的相關(guān)模塊和函數(shù);5.了解數(shù)據(jù)聚合與分組的概念,熟悉pandas模塊中DataFrame對象的分組與聚合運算方法;6.了解數(shù)據(jù)歸約、數(shù)據(jù)降維的概念和相關(guān)方法,掌握基于sklearn和scipy模塊的主成分分析(PCA)和奇異值分解相關(guān)方法。本章提綱1、數(shù)據(jù)清洗2、數(shù)據(jù)整合3、數(shù)據(jù)變換4、聚合與分組統(tǒng)計5、數(shù)據(jù)歸約數(shù)據(jù)清洗2024/5/1155數(shù)據(jù)清洗數(shù)據(jù)清理(也叫清洗)就是指把“臟數(shù)據(jù)”徹底洗掉,包括檢查數(shù)據(jù)一致性,處理無效值和缺失值等,從而提高數(shù)據(jù)質(zhì)量。在實際的工作中,數(shù)據(jù)清洗通常占開發(fā)過程的50%-70%左右的時間。一般認為,數(shù)據(jù)清理的含義是檢測和去除數(shù)據(jù)集中的噪聲數(shù)據(jù)和無關(guān)數(shù)據(jù),處理遺漏數(shù)據(jù),去除空白數(shù)據(jù)域和知識背景下的白噪聲。56數(shù)據(jù)清理—異常數(shù)據(jù)處理1.異常數(shù)據(jù)處理異常數(shù)據(jù)也稱為離群點(outlier),指采集的數(shù)據(jù)中,個別值的數(shù)據(jù)偏離其余的觀測值。如比爾蓋茨2017年入選中國科學(xué)院外籍院士,統(tǒng)計該類人群平均個人財富時則顯得尤為異常,如果不進行處理或消除,該類人群平均都是億萬富翁。再如小學(xué)五年級學(xué)生的身高數(shù)據(jù)(單位:米):(1.35,1.40,1.42,13.8,1.43,1.40)(1)異常數(shù)據(jù)分析使用統(tǒng)計量進行判斷:計算出最大值、最小值及均值,據(jù)此檢查數(shù)據(jù)是否超出合理范圍使用3σ原則:根據(jù)正態(tài)分布定義,距離平均值3σ(標準差)以外的數(shù)值出現(xiàn)屬于小概率事件,因此,異常值可以看成那些數(shù)據(jù)和均值的偏差超過3倍標準差的值57數(shù)據(jù)清理—異常數(shù)據(jù)處理使用箱型圖判斷異常值58數(shù)據(jù)清理—異常數(shù)據(jù)處理(2)異常數(shù)據(jù)處理方法刪除有異常數(shù)據(jù)的記錄:直接刪除,不予考慮視為缺失值:按照缺失值的處理方法進行相應(yīng)操作,如填充缺省值、均值、前向/后向填充、插值法等平均值修正:使用前后兩個觀測值的均值代替,或使用整個數(shù)據(jù)集的平均值代替不處理:將異常數(shù)據(jù)當(dāng)成正常數(shù)據(jù)進行操作59數(shù)據(jù)清理—缺失值處理2.缺失值處理數(shù)據(jù)缺失是指記錄的數(shù)據(jù)由于某些原因使部分數(shù)據(jù)丟失,可能會對機器學(xué)習(xí)或統(tǒng)計分析產(chǎn)生一定的影響。常見數(shù)據(jù)缺失原因:(1)部分信息因為不確定的原因暫時無法獲?。?)有些信息雖然記錄了,但是由于保存不當(dāng),部分丟失(3)由于采集信息人員工作疏忽,漏記某些數(shù)據(jù)60數(shù)據(jù)清理—缺失值處理處理缺失值的方法很多,如忽略存在缺失值的記錄、去掉包含缺失數(shù)據(jù)的屬性、手工填寫缺失值、使用默認值代替缺失值、使用屬性平均值(中位數(shù)或眾數(shù))代替缺失值、使用同類樣本平均值代替缺失值、預(yù)測最可能的值代替缺失值等。經(jīng)常使用的數(shù)據(jù)補插方法來代替缺失值:最近鄰補插:使用含缺失值的樣本附近的其他樣本的數(shù)據(jù)替代;或前后數(shù)據(jù)的均值替代等回歸方法:對含有缺失值的屬性,使用其他樣本屬性的值建立擬合模型,然后使用該模型預(yù)測缺失值插值法:使用已知數(shù)據(jù)建立合適的插值函數(shù),缺失值使用該函數(shù)計算出近似替代值。常見的插值函數(shù)有拉格朗日插值法(拉格朗日插值法可以給出一個恰好穿過二維平面上若干個已知點的多項式函數(shù))、牛頓插值法、分段插值法、樣條插值法、Hermite插值法等。61數(shù)據(jù)清理—噪聲數(shù)據(jù)處理噪聲無處不在,其對機器學(xué)習(xí)的影響也有大有小,這取決于噪聲相比真實數(shù)據(jù)的比例,也取決于學(xué)習(xí)的精度要求。噪聲數(shù)據(jù)的處理方法包括分箱、聚類和回歸:(1)分箱方法:把待處理的數(shù)據(jù)(某列屬性值)按照一定的規(guī)則放進一些箱子(區(qū)間)中,考察每一個箱子中的數(shù)據(jù),然后采用某種方法分別對每個箱子中的數(shù)據(jù)進行處理。涉及如何分箱及如何對每個箱子中的數(shù)據(jù)進行平滑處理。常見分箱方法等深分箱法:又稱統(tǒng)一權(quán)重法。將數(shù)據(jù)集按照記錄行數(shù)分箱,每箱具有相同記錄數(shù)(深度)等寬分箱法:又稱統(tǒng)一區(qū)間法。使數(shù)據(jù)集在整個屬性值的區(qū)間上平均分布,即每個箱的區(qū)間范圍是個常量,稱為箱子寬度用戶自定義區(qū)間:根據(jù)需要自定義區(qū)間62數(shù)據(jù)清理—噪聲數(shù)據(jù)處理分箱后就需要對每個箱子中的數(shù)據(jù)進行平滑處理。常見的數(shù)據(jù)平滑方法有:按平均值平滑:對同箱數(shù)據(jù)求平均值,然后替代箱子中所有數(shù)據(jù)按邊界值平滑:用距離較小的邊界值替代箱子中的每個數(shù)據(jù)按中值平滑:取箱子的中值替代箱子中的所有數(shù)據(jù)(2)聚類方法:分組為由類似的對象組成的多個類,找出落在分類或簇之外的值作為噪聲數(shù)據(jù)(3)回歸方法:擬合相關(guān)變量之間的回歸函數(shù)來預(yù)測下一個數(shù)值,包括線性和非線性回歸(4)其他如小波變換降噪處理方法傳統(tǒng)信號降噪中使用的傅里葉分析全部都是基于頻域的,將信號分解成一系列不同頻率的正余弦函數(shù)的疊加。傅里葉變換中即使是時域的局部變化也會影響頻域的全局,頻域的局部變化同樣也影響著時域的全局變化。之后由傅里葉變換又發(fā)展來了短時傅里葉變換(Short-time?Fourier?transform)(STFT)?和小波變換(wavelet?transform)。小波變換是一種信號的時間——尺度(時間——頻率)分析方法,它具有多分辨分析的特點,而且在時頻兩域都具有表征信號局部特征的能力,是一種窗口大小固定不變但其形狀可改變,時間窗和頻率窗都可以改變的時頻局部化分析方法。小波變換常見的形式有連續(xù)小波變換(CWT)、離散小波變換(DWT)等。63Python相關(guān)方法1.pandas和numpy方法pandas是Python中的一個進行數(shù)據(jù)分析與清洗的庫,基于numpy庫構(gòu)建,包含了大量標準數(shù)據(jù)模型,并提供了高效地操作大型數(shù)據(jù)集所需的工具,以及大量快速便捷地處理數(shù)據(jù)的函數(shù)和方法,使以numpy為中心的應(yīng)用變得十分簡單。pandas相關(guān)方法如下。(1)缺失數(shù)據(jù)處理。pandas使用NaN值表示浮點和非浮點數(shù)組中的缺失數(shù)據(jù),Python內(nèi)置的None值也會被當(dāng)作NaN處理。pandas缺失值處理的常用方法如表所示。64方法名稱方法描述cleaned清除所有缺失值dropna根據(jù)條件過濾缺失值isnull返回一個布爾值,標明哪些是缺失值fillna填充缺失值數(shù)據(jù)notnullisnull的否定式Python相關(guān)方法pandas處理缺失值的示例程序如下:65#搜索缺失值,用dropna過濾并刪除frompandasimportSeries,DataFramefromnumpyimportnanasNAimportnumpyasnpdata=Series([12,None,34,NA,68])print(data)print(data.isnull())print(data.dropna())data=DataFrame(np.random.randn(5,4))data.iloc[:2,1]=NAdata.iloc[:3,2]=NAdata.iloc[0,0]=NAprint(data)print(data.dropna(axis=1))print(data.dropna(thresh=2))#缺失值填充print(data.fillna({1:11,2:22}))print(data.fillna({1:data[1].mean(),2:data[2].mean()}))Python相關(guān)方法(2)重復(fù)數(shù)據(jù)處理。在數(shù)據(jù)采集中,經(jīng)常會出現(xiàn)重復(fù)數(shù)據(jù),這時可以使用pandas進行數(shù)據(jù)清洗。在pandas中可以使用duplicated方法查找重復(fù)數(shù)據(jù),使用drop_duplicates方法清洗重復(fù)數(shù)據(jù)。pandas處理異常值和重復(fù)值的示例程序如下:66#檢測和過濾異常值frompandasimport*importnumpyasnpdata=DataFrame(np.random.randn(10,4))print(data)print(data.describe())print(\n找出第3列絕對值大于1的項\n)data1=data[2]print(data1[np.abs(data1)>1])data1[np.abs(data1)>1]=100print(data)#移除重復(fù)數(shù)據(jù)data=DataFrame({name:[zhang]*3+[wang]*4,age:[18,18,19,19,20,20,21]})print("原始數(shù)據(jù):",data)print(data.duplicated())print(data.drop_duplicates())#返回移除重復(fù)數(shù)據(jù)后的結(jié)果,原對象值沒有改變print("函數(shù)調(diào)用后的數(shù)據(jù):",data)Python相關(guān)方法2.scipy方法scipy模塊中插值方法的示例程序如下:67#拉格朗日插值法frompandasimport*fromerpolateimportlagrangeimportnumpyasnpdf=DataFrame(np.random.randn(20,2),columns=[first,second])df[first][(df[first]<-1.5)|(df[first]>1.5)]=Nonedefployinterp_column(s,n,k=5):#插值函數(shù)y=s.iloc[list(range(n-k,n))+list(range(n+1,n+1+k))] #取值y=y[y.notnull()] #剔除空值returnlagrange(y.index,list(y))(n) #插值并返回插值結(jié)果foriindf.columns:forjinrange(len(df)):if(df[i].isnull())[j]:df[i][j]=ployinterp_column(df[i],j)print(df)Python相關(guān)方法3.sklearn方法sklearn中的Imputer類提供了一些基本方法(如SimpleImputer函數(shù))來處理缺失值,如使用均值、中位數(shù)或者缺失值所在列中頻繁出現(xiàn)的值來替換。SimpleImputer函數(shù)的形式如下:SimpleImputer(missing_values=nan,strategy=mean,fill_value=None,verbose=0,copy=True,add_indicator=False)●missing_values:缺失值是什么,一般情況下缺失值是空值,即np.nan?!駍trategy:采取什么策略填充空值,分別是mean、median、most_frequent以及constant,這是對每一列而言的。如果strategy=mean,則由該列的均值填充;如果strategy=median,則由該列的中位數(shù)填充:如果strategy=most_frequent,則由該列的眾數(shù)填充。需要注意的是,如果strategy=constant,則可以將空值填充為自定義的值,這就涉及后一個參數(shù)——fill_value,即如果strategy=constant,則填充fill_value的值。●copy:表示對原來沒有填充的數(shù)據(jù)的拷貝?!馻dd_indicator:如果該參數(shù)為True,則會在數(shù)據(jù)后面加入n列由0和1構(gòu)成的同樣大小的數(shù)據(jù),0表示所在位置非空,1表示所在位置為空,即相當(dāng)于一種判斷是否為空的索引。68Python相關(guān)方法示例程序如下:運行結(jié)果如下:69fromsklearn.imputeimportSimpleImputerimp=SimpleImputer(strategy=mean)#注意均值計算結(jié)果,空值不納入計算:(1+7)/2=4,(2+3+6)/3=3.66667imp.fit([[1,2],[np.nan,3],[7,6]])#擬合訓(xùn)練模型X=[[np.nan,2],[6,np.nan],[7,6]]print(X)print(imp.transform(X))[[nan,2],[6,nan],[7,6]][[4.2.][6.3.6667][7.6.]]數(shù)據(jù)整合2024/5/1170數(shù)據(jù)整合簡介我們?nèi)粘J褂玫臄?shù)據(jù)來自各種渠道,有的是連續(xù)數(shù)據(jù),有的是離散數(shù)據(jù),有的是模糊數(shù)據(jù),有的是定性數(shù)據(jù),有的是定量數(shù)據(jù)。數(shù)據(jù)整合就是將多文件或者多數(shù)據(jù)庫中的異構(gòu)數(shù)據(jù)連接合并,并進行必要的改名、格式轉(zhuǎn)換等操作,形成統(tǒng)一的完整數(shù)據(jù)視圖。在數(shù)據(jù)整合的過程中,一般需要考慮以下問題。(1)實體識別:數(shù)據(jù)來源不同,其概念定義也可能不同。如同名異義,異名同義,單位不統(tǒng)一等。(2)屬性冗余:數(shù)據(jù)中存在冗余,如同一屬性多次出現(xiàn),同一屬性命名不一致導(dǎo)致數(shù)據(jù)重復(fù)等。(3)數(shù)據(jù)不一致:編碼不一致導(dǎo)致數(shù)據(jù)表示不一致,如日期、新舊身份證號碼等。(4)連接與合并:不同來源的數(shù)據(jù)基于什么屬性或規(guī)則進行連接,是橫向連接還是縱向連接等。71Python相關(guān)方法Python通常使用pandas讀取外部數(shù)據(jù)源,其中DataFrame數(shù)據(jù)對象提供了豐富的數(shù)據(jù)連接與合并方法。(一)merge函數(shù)pandas中的merge函數(shù)類似于關(guān)系型數(shù)據(jù)庫SQL語句中join的用法,可以將不同數(shù)據(jù)集依照某些字段(屬性)進行合并操作,得到一個新的數(shù)據(jù)集。1.merge函數(shù)的用法pd.merge(left,right,how:str=inner,on=None,left_on=None,right_on=None,left_index:bool=False,right_index:bool=False,sort:bool=False,suffixes=(_x,_y),copy:bool=True,indicator:bool=False,validate=None)72Python相關(guān)方法參數(shù)說明如下:●left:待拼接的左側(cè)DataFrame對象。●right:待拼接的右側(cè)DataFrame對象?!駂ow:取值可選leftrightouterinner,默認是inner,即內(nèi)連接。inner是取交集,outer是取并集。比如“l(fā)eft:[A,B,C];right:[A,C,D];”,選用inner取交集時,left中出現(xiàn)的A會和right中出現(xiàn)的另一個A進行匹配拼接,B在right中沒有匹配到,則會丟失;選用outer取并集時,同時出現(xiàn)的A會進行一一匹配,沒有同時出現(xiàn)的會將缺失的部分添加為缺失值?!駉n:要加入的列或索引級別名稱,必須在左側(cè)和右側(cè)DataFrame對象中均找到。如果未傳遞且left_index和right_index為False,則DataFrame中列的交集將被推斷為連接鍵?!駆eft_on:左側(cè)DataFrame中的列或索引用作鍵,可以是列名、索引級別名稱,也可以是長度等于DataFrame長度的數(shù)組。●right_on:右側(cè)DataFrame中的列或索引用作鍵,可以是列名、索引級別名稱,也可以是長度等于DataFrame長度的數(shù)組?!駆eft_index:如果為True,則使用左側(cè)DataFrame中的索引(行標簽)作為其連接鍵。對于具有MultiIndex(分層)的DataFrame,級別數(shù)必須與右側(cè)DataFrame中的連接鍵數(shù)相匹配?!駌ight_index:與left_index功能相似。●sort:按字典順序通過連接鍵對結(jié)果DataFrame排序。默認為True,設(shè)置為False時將在很多情況下顯著提高性能?!駍uffixes:用于為重疊列名添加字符串后綴元組。默認添加(x,y)?!馽opy:始終從傳遞的DataFrame對象復(fù)制數(shù)據(jù)(默認為True),即使不需要重建索引也是如此?!駃ndicator:將一列添加到名為_merge的輸出DataFrame,其中包含每行的來源信息。_merge是分類類型,對于其合并鍵僅出現(xiàn)在左側(cè)DataFrame中的觀測值,取值為left_only;對于合并鍵僅出現(xiàn)在右側(cè)DataFrame中的觀測值,取值為right_only;如果在兩者中都能找到觀測值的合并鍵,則為left_only。73Python相關(guān)方法2.merge函數(shù)使用示例(1)在列上合并。示例程序如下:74importnumpyasnpimportpandasaspddf1=pd.DataFrame({key:[b,b,a,c,a,a,b],data1:range(7)})df2=pd.DataFrame({key:[a,b,d],data2:range(3)})pd.merge(df1,df2)#缺省對齊共同的列,合并不同列,若沒有對應(yīng)對齊列的值,則丟掉df3=pd.merge(df1,df2,on=key)#指定用來連接的列,對應(yīng)SQL中的主鍵和外鍵連接df4=pd.merge(df1,df2,how=outer) #相當(dāng)于數(shù)據(jù)庫的SQL外連接,兩邊沒有對應(yīng)的主外鍵值時也合并,其他不存在的列值則為空df1df2內(nèi)連接結(jié)果df3外連接結(jié)果df4

Python相關(guān)方法(2)在索引上合并。示例程序如下:75left1=pd.DataFrame({key:[a,b,a,a,b,c],value:range(6)})right1=pd.DataFrame({group_val:[3.5,7]},index=[a,b])pd.merge(left1,right1,left_on=key,right_index=True)#一個df的列值與另一個df的索引值對齊合并left1right1連接合并結(jié)果

Python相關(guān)方法(二)join函數(shù)DataFrame對象的join函數(shù)也可以通過索引或者指定的列連接兩個DataFrame。1.join函數(shù)用法函數(shù)定義如下:DataFrame.join(other,on=None,how=left,lsuffix=,rsuffix=,sort=False)參數(shù)說明如下?!駉ther:可為DataFrame,或者帶有名字的Series,或者DataFrame的list。如果傳遞的是Series,那么其name屬性應(yīng)當(dāng)是一個集合,并且該集合將會作為結(jié)果DataFrame的列名?!駉n:連接的列,默認使用索引連接?!駂ow:連接方式,默認為左連接。●lsuffix:左DataFrame中重復(fù)列的后綴。●rsuffix:右DataFrame中重復(fù)列的后綴?!駍ort:按照字典順序在連接鍵上對結(jié)果排序。默認為False,此時連接鍵的順序取決于連接類型(關(guān)鍵字)。76Python相關(guān)方法2.join函數(shù)使用示例示例程序如下:77left2=pd.DataFrame([[1.,2.],[3.,4.],[5.,6.]],index=[a,c,e],columns=[Ohio,Nevada])right2=pd.DataFrame([[7.,8.],[9.,10.],[11.,12.],[13,14]],index=[b,c,d,e],columns=[Missouri,Alabama])lr1=left2.join(right2,how=outer)#外連接lr2=left2.join(right2) #缺省時為左連接left2right2外連接結(jié)果lr1左連接結(jié)果lr2

Python相關(guān)方法(三)concat函數(shù)numpy庫提供的concatenate函數(shù)可用于多維數(shù)組的連接與合并,pandas的concat函數(shù)可以沿著指定的軸將多個DataFrame或者Series拼接到一起,缺省情況下是基于行合并記錄,這與常用的pd.merge函數(shù)不同,pd.merge函數(shù)只能實現(xiàn)兩個表的拼接。1.pandas的concat函數(shù)的用法pd.concat(objs:Union[Iterable[ForwardRef(NDFrame)],Mapping[Union[Hashable,NoneType],ForwardRef(NDFrame)]],axis=0,join=outer,ignore_index:bool=False,keys=None,levels=None,names=None,verify_integrity:bool=False,sort:bool=False,copy:bool=True)其中部分參數(shù)說明如下:●objs:Series,DataFrame或者panel構(gòu)成的序列l(wèi)ist。●axis:需要合并連接的軸,0表示行,1表示列?!駄oin:連接方式,inner或者outer。78Python相關(guān)方法2.concat函數(shù)使用示例示例程序如下:79s1=pd.Series([0,1],index=[a,b])s2=pd.Series([2,3,4],index=[c,d,e])s3=pd.Series([5,6],index=[f,g])#pandas的concat函數(shù),缺省情況下是基于行合并記錄s4=pd.concat([s1,s2,s3])#指定axis=1,基于列進行合并,無對應(yīng)的列則設(shè)置為空值s5=pd.concat([s1,s2,s3],axis=1)print(s1,s2,s3,s4,s5)s1,s2,s3值基于行的合并結(jié)果s4基于列的合并結(jié)果s5

數(shù)據(jù)變換2024/5/1180數(shù)據(jù)變換Transformation數(shù)據(jù)變換是指將數(shù)據(jù)轉(zhuǎn)換或統(tǒng)一成適合于機器學(xué)習(xí)的形式。就像人類學(xué)習(xí)一樣,需要將采集的外部數(shù)據(jù)轉(zhuǎn)換成我們可以接收的形式。由于實際過程中采集的各種數(shù)據(jù),形式多種多樣,格式也不一致,這些都需要采用一定的數(shù)據(jù)預(yù)處理,使得他們符合機器學(xué)習(xí)的算法使用。數(shù)據(jù)變換常用方法如下:使用簡單的數(shù)學(xué)函數(shù)對數(shù)據(jù)進行變換:如果數(shù)據(jù)較大,可以取對數(shù)或開方將數(shù)據(jù)壓縮變小;如數(shù)據(jù)較小可使用平方擴大數(shù)據(jù);在時間序列分析中,常使用對數(shù)變換或差分運算將非平穩(wěn)序列轉(zhuǎn)換為平穩(wěn)序列81數(shù)據(jù)變換Transformation2.數(shù)據(jù)歸一化(normalization),又稱標準化或規(guī)范化歸一化用于消除數(shù)據(jù)之間的量綱影響。不同的數(shù)據(jù)值可能差別很大,甚至具有不同的量綱,如果進行調(diào)整很可能影響數(shù)據(jù)分析結(jié)果,因此需要將數(shù)據(jù)落入到一個有限的范圍。數(shù)據(jù)的標準化或規(guī)范化就是將數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間。在某些比較和評價的指標處理中經(jīng)常會用到,去除數(shù)據(jù)的單位限制,將其轉(zhuǎn)化為無量綱的純數(shù)值,便于不同單位或量級的指標能夠進行比較和加權(quán)。其中最典型的就是數(shù)據(jù)的歸一化處理,即將數(shù)據(jù)統(tǒng)一映射到[0,1]區(qū)間上。(1)把數(shù)變?yōu)椋?,1)之間的小數(shù)主要是為了數(shù)據(jù)處理方便提出來的,把數(shù)據(jù)映射到0~1范圍之內(nèi)處理,更加便捷快速,應(yīng)該歸到數(shù)字信號處理范疇之內(nèi)。(2)把有量綱表達式變?yōu)闊o量綱表達式歸一化是一種簡化計算的方式,即將有量綱的表達式,經(jīng)過變換,化為無量綱的表達式,成為純量,解決數(shù)據(jù)的可比性。82數(shù)據(jù)變換Transformation**.數(shù)據(jù)標準化、中心化等概念標準化(Standardization):在機器學(xué)習(xí)中,可能要處理不同種類的資料,例如,?訊和圖?上的像素值,這些資料可能是?維度的,資料標準化后會使每個特征中的數(shù)值平均變?yōu)?、標準差變?yōu)?,不改變數(shù)據(jù)的原始分布。該方法被?泛?于機器學(xué)習(xí)算法中(如:?持向量機、邏輯回歸和類神經(jīng)?絡(luò))。Z-Score是?個經(jīng)常被?于數(shù)據(jù)標準化的?法。公式如(Z-score規(guī)范化)::s為標準差中心化(Centralization):每個元素與均值相減,平均值為0,對標準差?要求。正態(tài)化:改變數(shù)據(jù)的原始分布,使其服從正態(tài)分布。通常采?的?法有取對數(shù),開平?根,取倒數(shù),開平?,取指數(shù)等等,使得不對稱分布的數(shù)據(jù)(偏態(tài)數(shù)據(jù))呈現(xiàn)(或近似)正態(tài)分布。要這么做的原因在于:有些機器學(xué)習(xí)?法,?如線性回歸模型就默認數(shù)據(jù)是正態(tài)分布。歸?化、標準化的區(qū)別:歸?化是將樣本的特征值轉(zhuǎn)換到同?量綱下把數(shù)據(jù)映射到[0,1]或者[-1,1]區(qū)間內(nèi),僅由變量的極值決定,因區(qū)間放縮法是歸?化的?種。標準化是依照特征矩陣的列處理數(shù)據(jù),其通過求z-score的?法,轉(zhuǎn)換為標準正態(tài)分布,和整體樣本分布相關(guān),每個樣本點都能對標準化產(chǎn)?影響。它們的相同點在于都能取消由于量綱不同引起的誤差;都是?種線性變換,都是對向量X按照?例壓縮再進?平移。標準化和中?化的區(qū)別:標準化是原始分數(shù)減去平均數(shù)然后除以標準差,中?化是原始分數(shù)減去平均數(shù)。所以?般流程為先中?化再標準化83數(shù)據(jù)變換Transformation數(shù)據(jù)歸一化的好處(1)提升模型的收斂速度如圖,x1和x2的取值范圍差別很大,對其進行優(yōu)化時,會得到一個窄長的橢圓形,導(dǎo)致在梯度下降時,梯度的方向為垂直等高線的方向而走之字形路線,這樣會使迭代很慢,相比之下,右圖的迭代就會很快(理解:也就是步長走多走少方向總是對的,不會走偏)(2)提升模型的精度涉及到一些距離計算的算法時效果顯著,比如算法要計算歐氏距離,圖中x2的取值范圍比較小,涉及到距離計算時其對結(jié)果的影響遠比x1帶來的小,所以這就會造成精度的損失。所以歸一化很有必要,他可以讓各個特征對結(jié)果做出的貢獻相同。例子:圖像識別建立深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),培訓(xùn)數(shù)據(jù)之前將圖像數(shù)組數(shù)據(jù)統(tǒng)一除以25584數(shù)據(jù)變換Transformation常見的數(shù)據(jù)歸一化方法(1)最小-最大歸一化min-max標準化(Min-maxnormalization)/0-1標準化(0-1normalization),也叫離差標準化,是對原始數(shù)據(jù)的線性變換,使結(jié)果落到[0,1]區(qū)間。缺點是有新數(shù)據(jù)加入時可能導(dǎo)致最小最大值變化,需要重新定義。轉(zhuǎn)換函數(shù)如下:(2)Z-score標準化方法也稱為零-均值規(guī)范化方法,或標準差標準化,這種方法給予原始數(shù)據(jù)的均值(mean)和標準差(standarddeviation)進行數(shù)據(jù)的標準化。經(jīng)過處理的數(shù)據(jù)符合標準正態(tài)分布,即均值為0,標準差為1,其轉(zhuǎn)化函數(shù)為:x?=(x?μ)/σ。其中μ為全體樣本數(shù)據(jù)的均值,σ標準差。該方法要求樣本分布近似為高斯分布,否則歸一化效果會變得糟糕。z-score標準化方法適用于屬性A的最大值和最小值未知的情況,或有超出取值范圍的離群數(shù)據(jù)的情況。(3)小數(shù)定標規(guī)范化標準化方法通過移動數(shù)據(jù)的小數(shù)點位置來進行標準化。小數(shù)點移動多少位取決于屬性

溫馨提示

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

評論

0/150

提交評論