Python數(shù)據(jù)分析與應用 課件 第11、12章 scipy;Seaborn_第1頁
Python數(shù)據(jù)分析與應用 課件 第11、12章 scipy;Seaborn_第2頁
Python數(shù)據(jù)分析與應用 課件 第11、12章 scipy;Seaborn_第3頁
Python數(shù)據(jù)分析與應用 課件 第11、12章 scipy;Seaborn_第4頁
Python數(shù)據(jù)分析與應用 課件 第11、12章 scipy;Seaborn_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章scipy

《Python數(shù)據(jù)分析與應用》ScipyScipy用于統(tǒng)計、優(yōu)化、整合、線性代數(shù)模塊、傅里葉變換、信號和圖像處理等,常用的scipy工具有stats(統(tǒng)計學工具包)、erpolate(插值,線性的,三次方)、cluster(聚類)、signal(信號處理)等。安裝scipy之前必須安裝numpyScipy官方網(wǎng)址。ScipyScipy功能函數(shù)功能函數(shù)積分egrate線性代數(shù)scipy.linalg信號處理scipy.signal稀疏矩陣scipy.sparse空間數(shù)據(jù)結構和算法scipy.spatial統(tǒng)計學scipy.stats最優(yōu)化scipy.optimize多維圖像處理scipy.ndimage插值erpolate聚類scipy.cluster曲線擬合scipy.curve_fit文件輸入/輸出scipy.io傅里葉變換scipy.fftpack稀疏矩陣

在矩陣中,若數(shù)值為0的元素數(shù)目遠遠多于非0元素的數(shù)目,并且非0元素分布沒有規(guī)律時,則稱該矩陣為稀疏矩陣。coo_matrix()用于創(chuàng)建稀疏矩陣,語法如下所示。

coo_matrix((data,(i,j)),[shape=(M,N)])矩陣運算fromscipy.linalgimport*importnumpyasnp

A=np.matrix('[1,2;3,4]')print(A)print(A.T)#轉置矩陣print(A.I)#逆矩陣[[12][34]][[13][24]][[-2.1.][1.5-0.5]]線性方程組求解

fromscipyimportlinalgimportnumpyasnpa=np.array([[1,3,5],[2,5,-1],[2,4,7]])b=np.array([10,6,4])x=linalg.solve(a,b)print(x)非線性方程組求解

fromscipy.optimizeimportfsolvefrommathimportsindeff(x):

x0,x1,x2=x.tolist()

return[5*x1+3,4*x0*x0-2*sin(x1*x2),x1*x2-1.5]

#f計算方程組的誤差,[1,1,1]是未知數(shù)的初始值result=fsolve(f,[1,1,1])

print(result)print(f(result))函數(shù)最值

fromscipy.optimizeimportminimizeimportnumpyasnp

#計算1/x+x的最小值deffun(args):a=argsv=lambdax:a/x[0]+x[0]returnvif__name__=="__main__":args=(1)#ax0=np.asarray((2))#初始猜測值res=minimize(fun(args),x0,method='SLSQP')print(res.fun)print(res.success)print(res.x)最小二乘法

最小二乘法可以理解為就是通過最小化誤差的平方和來尋找最佳的匹配函數(shù),常用于曲線擬合。一般情況下擬合的曲線為k*x+b函數(shù),即尋找最好的k、b值實現(xiàn)分類效果。 scipy的leastsq函數(shù)用于最小二乘法的擬合

scipy.optimize.leastsq(func,x0,args=())數(shù)據(jù)分布泊松分布正態(tài)分布指數(shù)分布均勻分布正態(tài)分布正態(tài)分布(Normaldistribution),也稱“常態(tài)分布”,又名高斯分布(Gaussiandistribution),正態(tài)曲線呈鐘型,兩頭低,中間高,左右對稱因其曲線呈鐘形,又稱之為鐘形曲線。scipy.norm實現(xiàn)正態(tài)分布。binomial=stats.binom.pmf(k,n,p)指數(shù)分布

指數(shù)分布描述的是事件發(fā)生的時間間隔,主要用于描述電子元器件的壽命。

scipy.expon實現(xiàn)指數(shù)分布。泊松分布#平均值,方差,偏度,峰度mean,var,skew,kurt=poisson.stats(mu,moments='mvsk')泊松分布用于描述單位時間/面積內(nèi),隨機事件發(fā)生的次數(shù)。例如,譬如:某一服務設施一定時間內(nèi)到達的人數(shù)、一個月內(nèi)機器損壞的次數(shù)等。指數(shù)分布指數(shù)分布描述的是事件發(fā)生的時間間隔,主要用于描述電子元器件的壽命。scipy.expon實現(xiàn)指數(shù)分布。統(tǒng)計量統(tǒng)計量包括平均數(shù)、中位數(shù)、眾數(shù)、樣本均值(即n個樣本的算術平均值),樣本方差(即n個樣本與樣本均值之間平均偏離程度的度量)等,用于數(shù)據(jù)進行分析、檢驗的變量。

眾數(shù)是指在統(tǒng)計分布上具有明顯集中趨勢點的數(shù)值,是出現(xiàn)次數(shù)最多的數(shù)值,代表數(shù)據(jù)的一般水平。scipy.stats提供mode函數(shù)實現(xiàn)求眾數(shù)。scipy.stats模塊提供了pearsonr函數(shù)計算皮爾森相關系數(shù),語法如下所示:fromscipy.statsimportpearsonrpearsonr(x,y)參數(shù)解釋如下:x為特征,y為目標變量。圖像處理圖像處理和分析通常被看作是對二維值數(shù)組的操作。scipy.ndimage提供了許多通用的圖像處理和分析功能,支持圖像矩陣變換、圖像濾波、圖像卷積等功能。圖像旋轉Scipy提供ndimage.rotate函數(shù)用于旋轉圖像。rotate_flower=ndimage.rotate(flower,45)plt.imshow(rotate_flower)plt.title('rotate_flower')圖像平滑

圖像平滑是一種區(qū)域增強的算法,用于突出圖像的低頻成分、主干部分或抑制圖像的噪聲和干擾高頻成分,使圖像亮度平緩漸變、減少突變梯度,改善圖像質(zhì)量的圖像處理方法。圖像平滑分為:高斯濾波中值濾波高斯濾波scipy.ndimage模塊提供gaussian_filter函數(shù)。fromscipyimportndimageimportmatplotlib.imageasmpimgimportmatplotlib.pyplotaspltflower=mpimg.imread('d://flower.jpg')flower1=ndimage.gaussian_filter(flower,sigma=3)plt.imshow(flower1)plt.show()scipy.ndimage模塊的median_filte函數(shù)實現(xiàn)中值濾波。fromscipyimportndimageimportmatplotlib.imageasmpimgimportmatplotlib.pyplotaspltflower=mpimg.imread('d://flower.jpg')flower1=ndimage.median_filter(flower,size=10)plt.imshow(flower1)plt.show()中值濾波圖像銳化圖像銳化就是補償圖像的輪廓,增強圖像的邊緣及灰度跳變的部分,使得圖像變得清晰。scipy.ndimage模塊的prrwitt函數(shù)實現(xiàn)圖像銳化。fromscipyimportndimageimportmatplotlib.imageasmpimgimportmatplotlib.pyplotaspltflower=mpimg.imread('d://flower.jpg')flower1=ndimage.prewitt(flower)plt.imshow(flower1)plt.show()第12章Seaborn

《Python數(shù)據(jù)分析與應用》SeabornSeaborn是基于matplotlib的圖形可視化python包,便于做出各種統(tǒng)計圖表。Pandas與Seaborn都是使用matplotlib作圖,但是兩者區(qū)別較大,如下所示:(1)Pandas善于簡單繪圖,而更豐富的圖使用Seaborn繪制。(2)Pandas沒有太多的參數(shù)優(yōu)化圖形,Seaborn提供大量參數(shù)調(diào)整圖形。安裝Seaborn繪圖特色Matplotlib繪圖Seaborn繪圖importmatplotlib.pyplotaspltx=[1,3,5,7,9,11,13,15,17,19]y_bar=[3,4,6,8,9,10,9,11,7,8]y_line=[2,3,5,7,8,9,8,10,6,7]plt.bar(x,y_bar)plt.plot(x,y_line,'-o',color='y‘)importmatplotlib.pyplotaspltx=[1,3,5,7,9,11,13,15,17,19]y_bar=[3,4,6,8,9,10,9,11,7,8]y_line=[2,3,5,7,8,9,8,10,6,7]importseabornassnssns.set()#聲明使用Seaborn樣式plt.bar(x,y_bar)plt.plot(x,y_line,'-o',color='y‘)相比于Matplotlib默認的純白色背景,Seaborn默認的淺灰色網(wǎng)格背景看起來的確要細膩舒適一些。而柱狀圖的色調(diào)、坐標軸的字體大小也都有一些變化。圖表分類(1)矩陣圖(2)回歸圖(3)關聯(lián)圖(4)類別圖(5)分布圖數(shù)據(jù)集seaborn內(nèi)置數(shù)據(jù)集,包括常見的泰坦尼克、鳶尾花等經(jīng)典數(shù)據(jù)集。

使用load_dataset函數(shù)調(diào)用數(shù)據(jù)集。繪圖設置繪圖元素主題設置調(diào)色板設置繪圖元素

seaborn通過set_context方法設置繪圖元素參數(shù),主要影響標簽、線條和其他元素的效果,與style有點區(qū)別,不會影響整體的風格。語法如下所示:seaborn.set_context(context=None,font_scale=1,rc=None)主題設置Seaborn通過set_style設置darkgrid,whitegrid,dark,white,ticks5種主題風格。其中,white和ticks包含沒有必要的上邊框和右邊框。另外,sns.despine()用于去掉圖形右邊和上面的邊線。調(diào)色板顏色不但代表各種特征,而且提高整個圖的觀賞性。Seaborn使用color_palette函數(shù)實現(xiàn)分類色板。繪圖seaborn共有5個大類21種圖。(1)關系類圖表(Relationalplots)(2)分類圖表(Categoricalplots)(3)分布圖(Distributionplot)(4)回歸圖(Regressionplots)(5)矩陣圖(Matrixplots)直方圖Seaborn提供distplot函數(shù)實現(xiàn)importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassns#生成100個成標準正態(tài)分布的隨機數(shù)x=np.random.normal(size=100)

#kde=True,進行核密度估計sns.distplot(x,kde=True)#密度曲線KDEplt.show()核密度圖

核密度圖一般與直方圖搭配使用,顯示數(shù)據(jù)的分布的“疏密程度”,核密度圖顯示為擬合后的曲線,“峰”越高表示數(shù)據(jù)越“密集”。Seaborn提供kdeplot函數(shù)實現(xiàn)。importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsnp.random.seed(4)#設置隨機數(shù)種子Gaussian=np.random.normal(0,1,1000)#創(chuàng)建一組平均數(shù)為0,標準差為1,總個數(shù)為1000的符合標準正態(tài)分布的數(shù)據(jù)ax.hist(Gaussian,bins=25,histtype="stepfilled",normed=True,alpha=0.6)sns.kdeplot(Gaussian,shade=True)plt.show()散點圖Seaborn提供stripplot函數(shù)實現(xiàn)。importseabornassnsimportmatplotlib.pyplotaspltsns.set(style="whitegrid",color_codes=True)tips=sns.load_dataset("tips")#“小費”數(shù)據(jù)集sns.stripplot(data=tips)plt.show()箱型圖Seaborn提供boxplot函數(shù)實現(xiàn)。importseabornassnsimportmatplotlib.pyplotasplt

sns.set_style("whitegrid")tips=sns.load_dataset("tips")#載入自帶數(shù)據(jù)集“tips”,研究三個變量關系,是否抽煙與日期為分類變量,消費是連續(xù)變量#結論發(fā)現(xiàn)吸煙者在周末消費明顯大于不吸煙的人ax=sns.boxplot(x="day",y="total_bill",hue="smoker",data=tips,palette="Set3")plt.show()小提琴圖

小提琴圖其實是箱線圖與核密度圖的結合,箱線圖展示了分位數(shù)的位置,小提琴圖用于展示任意位置的密度。通過小提琴圖可以知道哪些位置的密度較高。在小提琴圖中,白點是中位數(shù),黑色盒形的范圍是上四分位點和下四分位點,細黑線表示須,表示離群點的離群程度,越長表示離群點越遠。鳶尾花(Iris)數(shù)據(jù)集每類50個數(shù)據(jù),每個數(shù)據(jù)包含花萼長度(sepallength)、花萼寬度(sepalwidth)、花瓣長度(petallength)、花瓣寬度(petalwidth)4個屬性條形圖Seaborn提供barplot函數(shù)實現(xiàn)。importseabornassnsimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltx=np.arange(8)y=np.array([1,5,3,6,2,4,5,6])df=pd.DataFrame({"x-axis":x,"y-axis":y})sns.barplot("x-axis","y-axis",palette="RdBu_r",data=df)plt.xticks(rotation=90)plt.show()熱力圖Seaborn提供heatmap函數(shù)實現(xiàn)。importnumpyasnp;np.random.seed(

溫馨提示

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

評論

0/150

提交評論