2023Python大數(shù)據(jù)分析工具SciPy用法03_第1頁
2023Python大數(shù)據(jù)分析工具SciPy用法03_第2頁
2023Python大數(shù)據(jù)分析工具SciPy用法03_第3頁
2023Python大數(shù)據(jù)分析工具SciPy用法03_第4頁
2023Python大數(shù)據(jù)分析工具SciPy用法03_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python大數(shù)據(jù)分析工具SciPy用法目錄TOC\o"1-2"\h\u3116Python大數(shù)據(jù)分析工具SciPy 3104891.1SciPy簡介 390661.2文件輸入和輸出:SciPy.io 53260(1)這個模塊可以加載和保存Matlab文件 59542(2)讀取圖片 5724(3)載入TXT文件 618072(4)智能導入文本/CSV文件 612342(5)高速、有效率,但NumPy特有的二進制格式 6138371.3特殊函數(shù):SciPy.special 692361.4線性代數(shù)操作:SciPy.linalg 7171211.5快速傅里葉變換:sipy.fftpack 7212281.6優(yōu)化器:SciPy.optimize 882321.7統(tǒng)計工具:SciPy.stats 9144111.8SciPy實例 1018571(1)最小二乘擬合 1017734(2)函數(shù)最小值 13246611.9總結(jié) 15Python大數(shù)據(jù)分析工具SciPySciPy庫構(gòu)建于NumPy之上,提供了一個用于在Python中進行科學計算的工具集,如數(shù)值計算的算法和一些功能函數(shù),可以方便地處理數(shù)據(jù)。SciPy庫主要包含以下內(nèi)容:統(tǒng)計優(yōu)化集成線性代數(shù)信號和圖像處理SciPy簡介SciPy是一個高級的科學計算庫,它和NumPy的聯(lián)系很密切,SciPy一般都是操控NumPy數(shù)組來進行科學計算,所以可以說SciPy是基于NumPy的。SciPy由一些特定功能的子模塊組成:SciPy.cluster:向量量化。SciPy.constants:數(shù)學常量。SciPy.fftpack:快速傅里葉變換。SciPegrate:積分。SciPerpolate:插值。SciPy.io:數(shù)據(jù)輸入輸出。SciPy.linalg:線性代數(shù)。SciPy.ndimage:N維圖像。SciPy.odr:正交距離回歸。SciPy.optimize:優(yōu)化算法。SciPy.signal:信號處理。SciPy.sparse:稀疏矩陣。SciPy.spatial:空間數(shù)據(jù)結(jié)構(gòu)和算法。SciPy.special:特殊數(shù)學函數(shù)。SciPy.stats:統(tǒng)計函數(shù)。它們?nèi)蕾嘚umPy,但是每個模塊之間基本獨立。導入NumPy和這些SciPy模塊的標準方式是:importnumpyasnpimportnumpyasnpfromscipyimportstats#其他子模塊相同主SciPy命名空間大多包含真正的NumPy函數(shù)(嘗試SciPy.cos就是np.cos)。這些僅僅是由于歷史原因,通常沒有理由在代碼中使用importSciPy。文件輸入和輸出:SciPy.io這個模塊可以加載和保存Matlab文件【例4.1】讀取圖片【例4.2】載入TXT文件numpy.loadtxt()numpy.savetxt()numpy.loadtxt()numpy.savetxt()智能導入文本/CSV文件numpy.genfromtxt()numpy.recfromcsv()numpy.genfromtxt()numpy.recfromcsv()高速、有效率,但NumPy特有的二進制格式numpy.save()numpy.load()numpy.save()numpy.load()特殊函數(shù):SciPy.special特殊函數(shù)是先驗函數(shù),常用的有:貝塞爾函數(shù),如SciPy.special.jn()(整數(shù)n階貝塞爾函數(shù))。橢圓函數(shù),如SciPy.special.ellipj()(雅可比橢圓函數(shù))。伽馬函數(shù),如SciPy.special.gamma()。還要注意SciPy.special.gammaln(),這個函數(shù)給出對數(shù)坐標的伽馬函數(shù),因此有更高的數(shù)值精度。線性代數(shù)操作:SciPy.linalgSciPy.linalg模塊提供標準線性代數(shù)運算,依賴于底層有效率的實現(xiàn)(BLAS,LAPACK)。假如要計算一個方陣的行列式,需要調(diào)用det()函數(shù):【例4.3】>>>fromscipyimportlinalg>>>fromscipyimportlinalg>>>arr=np.array([[1,2],... [3,4]])>>>linalg.det(arr)-2.0>>>arr=np.array([[3,2],... [6,4]])>>>linalg.det(arr)0.0比如求一個矩陣的轉(zhuǎn)置:【例4.4】>>>arr=np.array([[1,2],>>>arr=np.array([[1,2],... [3,4]])>>>iarr=linalg.inv(arr)>>>iarrarray([[-2.,1.],[1.5,-0.5]])快速傅里葉變換:sipy.fftpack首先用NumPy初始化正弦信號,示例代碼如下:【例4.5】>>>importnumpyasnp>>>importnumpyasnp>>>time_step=0.02>>>period=5.>>>time_vec=np.arange(0,20,time_step)>>>sig=np.sin(2*np.pi/period*time_vec)+\>>>sig=np.sin(2*np.pi/period*time_vec)+\... 0.5*np.random.randn(time_vec.size)如果我們要計算該信號的采樣頻率,那么可以用SciPy.fftpack.fftfreq()函數(shù)。計算它的快速傅里葉變換使用SciPy.fftpack.fft()函數(shù):【例4.6】>>>fromscipyimportfftpack>>>fromscipyimportfftpack>>>sample_freq=fftpack.fftfreq(sig.size,d=time_step)>>>sig_fft=fftpack.fft(sig)NumPy中也有用于計算快速傅里葉變換的模塊:numpy.fft。但是SciPy.fftpack是我們的首選,因為它應用了更多底層的工具,工作效率要高一些。優(yōu)化器:SciPy.optimize優(yōu)化是找到最小值或等式的數(shù)值解的問題。SciPy.optimization子模塊提供了函數(shù)最小值(標量或多維)、曲線擬合和尋找等式的根的有用算法。SciPy.optimize通常用來最小化一個函數(shù)值,構(gòu)建一個函數(shù)并繪制函數(shù)圖?!纠?.7】>>>deff(x):>>>deff(x):...returnx**2+10*np.sin(x)>>>x=np.arange(-10,10,0.1)>>>plt.plot(x,f(x))>>>plt.show()效果如圖4.1所示。圖4.1SciPy.optimize構(gòu)建一個函數(shù)并繪制函數(shù)圖如果要找出這個函數(shù)的最小值,也就是曲線的最低點,就可以使用BFGS優(yōu)化算法(BroydenFletcherGoldfarbShannoAlgorithm):可以得到最低點的值為-1.30644003,optimize.fmin_bfgs(f,0)第二個參數(shù)0表示從0點的位置最小化,找到最低點(該點剛好為全局最低點)。假如從3點的位置開始梯度下降,那么得到的將會是局部最低點3.83746663:>>>optimize.fmin_bfgs(f,3,disp=0)array([3.83746663])>>>optimize.fmin_bfgs(f,3,disp=0)array([3.83746663])統(tǒng)計工具:SciPy.statsPython有一個很好的統(tǒng)計推斷包,就是SciPy里面的stats。SciPy的stats模塊包含了多種概率分布的隨機變量,隨機變量分為連續(xù)的和離散的兩種。所有的連續(xù)隨機變量都是rv_continuous的派生類的對象,而所有的離散隨機變量都是rv_discrete的派生類的對象。各個隨機過程的隨機數(shù)生成器可以從numpy.random中找到。首先隨機生成1000個服從正態(tài)分布的數(shù),如圖4.2所示。圖4.2隨機生成服從正態(tài)分布的數(shù)【例4.8】>>>a=np.random.normal(size=1000)#>>>a=np.random.normal(size=1000)#用stats模塊計算該分布的均值和標準差>>>loc,std=stats.norm.fit(a)>>>loc>>>std#中位數(shù)>>>np.median(a)0.04041769593...SciPy的其他模塊(計算積分、信號處理、圖像處理的模塊)就不一一介紹了。其實機器學習最基礎(chǔ)的部分還是統(tǒng)計算法和優(yōu)化算法。SciPy實例最小二乘擬合假設(shè)有一組實驗數(shù)據(jù)(x[i],y[i]),知道它們之間的函數(shù)關(guān)系:y=f(x),通過這些已知信息,需要確定函數(shù)中的一些參數(shù)項。例如,如果f是一個線型函數(shù)f(x)=k*x+b,那么參數(shù)k和b就是需要確定的值。如果將這些參數(shù)用P表示的話,就要找到一組P值使得如下公式中的S函數(shù)最?。哼@種算法被稱為最小二乘擬合(Least-SquareFitting)。用已知數(shù)據(jù)集(x,y)去確定一組參數(shù)(k,b),使得實際的y值減去預測的y值的平方和最小。SciPy中的子函數(shù)庫optimize已經(jīng)提供了實現(xiàn)最小二乘擬合算法的函數(shù)leastsq。下面是用leastsq進行數(shù)據(jù)擬合的一個例子?!纠?.9】這個例子中要擬合的函數(shù)是一個正弦波函數(shù),它有3個參數(shù):A、k和theta,分別對應振幅、頻率和相角。假設(shè)實驗數(shù)據(jù)是一組包含噪聲的數(shù)據(jù)x,y1,其中y1是在真實數(shù)據(jù)y0的基礎(chǔ)上加入噪聲得到的。通過leastsq函數(shù)對帶噪聲的實驗數(shù)據(jù)x, y1進行數(shù)據(jù)擬合,可以找到x和真實數(shù)據(jù)y0間的正弦關(guān)系的3個參數(shù):A、k和theta。最后可以發(fā)現(xiàn)擬合參數(shù)雖然和真實參數(shù)完全不同,但是由于正弦函數(shù)具有周期性,實際上擬合參數(shù)得到的函數(shù)和真實參數(shù)對應的函數(shù)是一致的。函數(shù)最小值optimize庫提供了幾個求函數(shù)最小值的算法:fmin、fmin_powell、fmin_cg和fmin_bfgs。對于一個離散的線性時不變系統(tǒng)傳遞函數(shù)h,如果它的輸入是x,那么其輸出y可以用x和h的卷積表示:y=x(*)h。現(xiàn)在的問題是如果已知系統(tǒng)的輸入x和輸出y,如何計算系統(tǒng)的傳遞函數(shù)h;或者已知系統(tǒng)的傳遞函數(shù)h和系統(tǒng)的輸出y,如何計算系統(tǒng)的輸入x。這種運算被稱為反卷積運算,是十分困難的,特別是在實際的運用中,測量系統(tǒng)的輸出總是存在誤差的。下面用fmi

溫馨提示

  • 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

提交評論