




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章概論西華大學數(shù)據分析基礎與實踐數(shù)據分析常用庫介紹
目錄ContentsNumpyPandasMatplotlibScipyScikit-LearnNumpy一1Numpy4NumPy(NumericPython)庫是Python當中一個開源的數(shù)值計算擴展庫,它可用來存儲和處理大型矩陣,比Python自身的嵌套列表(nestedliststructure)結構要高效得多(該結構也可以用來表示矩陣(matrix))。NumPy和稀疏矩陣運算包SciPy配合使用更加方便。。NumPy提供了許多高級的數(shù)值編程工具,如:矩陣數(shù)據類型、矢量處理,以及精密的運算庫,多用于嚴格的數(shù)字處理,在很多大型金融公司業(yè)務中廣泛使用,一些核心的科學計算組織(如:LawrenceLivermore,NASA等)用其處理一些本來使用C++,F(xiàn)ortran或Matlab等所做的任務。1.1NumPy庫的安裝NumPy庫在Windows下可以通過下面的步驟進行安裝:啟動Anaconda下面的“AnacondaPrompt”或系統(tǒng)的“cmd”命令窗口,輸入如下命令即可完成安裝:pipinstallnumpy51.2NumPy導入首先,在使用NumPy庫之前,需要使用import語句引入該模塊,代碼如下所示:importnumpyasnp或者:fromnumpyimport*61.3創(chuàng)建數(shù)組NumPy當中的很多操作都是基于數(shù)組或者向量來進行的,可以通過array()函數(shù)傳遞Python序列對象的方法創(chuàng)建數(shù)組。如果傳遞的是多層嵌套的序列,將創(chuàng)建多維數(shù)組。下面是分別創(chuàng)建一維和二維數(shù)組的代碼:a=np.array([1,2,3,4])#創(chuàng)建一維數(shù)組b=np.array([5,6,7,8])c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])#創(chuàng)建二維數(shù)組71.4查詢數(shù)組類型數(shù)組的元素類型可以通過dtype屬性獲得,實現(xiàn)代碼如下所示:a.dtype同時可以通過dtype參數(shù)在創(chuàng)建的時候指定元素類型,實現(xiàn)代碼如下所示:e=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]],dtype=npfloat)81.5數(shù)組的其他創(chuàng)建方式(1) arange函數(shù)類似于Python的range函數(shù),通過指定開始值、終值和步長來創(chuàng)建一維數(shù)組,注意數(shù)組不包括終值,實現(xiàn)代碼如下所示:f=np.arange(0,1,0.1)(2)linspace函數(shù)通過指定開始值、終值和元素個數(shù)來創(chuàng)建一維數(shù)組,可以通過endpoint關鍵字指定是否包括終值,默認設置包括終值,實現(xiàn)代碼如下所示:g=np.linspace(0,1,12)(3)logspace函數(shù)和linspace類似,但是它創(chuàng)建的是等比數(shù)列,實現(xiàn)代碼如下所示:h=np.logspace(0,2,10)91.6數(shù)組元素的存取數(shù)組元素的存取方法和Python的標準方法相同,實現(xiàn)代碼如下所示:a=np.arange(10)實現(xiàn)對數(shù)組訪問不同的元素,實現(xiàn)代碼如下所示:a[3:5]101.7ufunc運算ufunc是universalfunction的縮寫,是一種能對ndarray的每個元素進行操作的函數(shù)。它支持數(shù)組廣播、類型轉換和其他一些標準功能。也就是說,ufunc是函數(shù)的“矢量化”包裝器,它接受固定數(shù)量的特定輸入并生成固定數(shù)量的特定輸出。NumPy內置的許多ufunc函數(shù)是在C語言級別實現(xiàn)的,因此它們的計算速度非??臁1热鏽umpy.sin()的速度就比Python自帶的math.sin()的速度要快得多。111.8矩陣的運算NumPy庫提供了matrix類,使用matrix類創(chuàng)建的是矩陣對象,它們的加減乘除運算默認采用矩陣方式,因此其用法和Matlab十分相似。具體使用方法如下所示:a=np.matrix(‘12;34’)b=a.T #返回矩陣a的轉置矩陣并且存儲于bc=a.I #返回矩陣a的逆矩陣并且存儲于c由于NumPy中同時存在ndarray和matrix對象,讀者很容易混淆,一般情況下不推薦在較復雜的程序中使用matix,通??梢酝ㄟ^ndarray對數(shù)組的各種操作來實現(xiàn)矩陣的運算。下面是一些創(chuàng)建特殊矩陣的代碼示例:a=np.zeros((5,),dtype=) #使用zeros方法創(chuàng)建0矩陣b=np.empty([2,4])#使用empty方法創(chuàng)建一個2行4列任意數(shù)據的矩陣c=np.array([1,2,3],[4,5,6])#使用array方法創(chuàng)建一個2行3列指定數(shù)據的矩陣d=np.dot(b,c)#使用dot函數(shù)實現(xiàn)叉乘運算12Pandas二2Pandas14Pandas是Python的一個數(shù)據分析包,最初是由AQRCapitalManagement于2008年4月開發(fā),目前由專注于Python數(shù)據包開發(fā)的PyData開發(fā)團隊繼續(xù)開發(fā)和維護,屬于PyData項目的一個部分,Pandas的名稱來自面板數(shù)據和Python數(shù)據分析。Pandas引入了大量庫和一些標準的數(shù)據模型,提供了高效的操作大型數(shù)據集所需要的工具。Pandas也提供了大量可以快速便捷處理數(shù)據的函數(shù)和方法,是Python成為強大而高效的數(shù)據分析工具的重要因素之一。Pandas的基本數(shù)據結構是Series和DataFrame。其中Series稱為序列,產生一個一維數(shù)組,DataFrame產生二維數(shù)組,它的每一列都是一個Series。2.1Pandas安裝和導入15Pandas庫在Windows下的具體安裝步驟如下:pipinstallpandas需要使用Pandas計算庫,需要使用import語句引入該模塊,代碼如下所示:importpandasaspd或者frompandasimport*2.2Series16Series是一維標記數(shù)組,可以存儲任意數(shù)據類型,如整型、字符串、浮點型和Python對象等,軸的標簽稱為索引(index)。注意Series、NumPy中的一維Array、Python基本數(shù)據結構List的區(qū)別:List中的元素可以是不同的數(shù)據類型,而Array和Series中則只允許存儲相同的數(shù)據類型,這樣可以更有效地使用內存,提高運算效率。2.2Series172.3DataFrame18DataFrame是二維標記數(shù)據結構,其列可以是不同的數(shù)據類型,它是最常用的Pandas對象,像Series一樣可以接收多種輸入:lists、dicts、series和DataFrame等。初始化對象時,除了數(shù)據外還可以傳遞index和columns兩個參數(shù)。DataFrame結構和excel表的結構非常相似。2.3DataFrame19Matplotlib三3.1Matplotlib安裝與導入21Matplotlib庫在Windows下的具體安裝步驟如下:pipinstallMatplotlib使用Matplotlib庫之前需要先使用import語句引入該模塊,代碼如下所示:importMatplotlib或者fromMatplotlibimport*
3.2基本繪圖plot命令22Matplotlib庫中,最常使用的命令就是plot,常用的繪圖方法實現(xiàn)代碼如下所示:importmatplotlib.pyplotaspltimportnumpyasnp #導入numpy模塊方便后續(xù)使用numpy模塊中的函數(shù)x=np.linspace(0,-2*np.pi,100) #使用linspace函數(shù)創(chuàng)建等差數(shù)列y=np.sin(x) plt.figure(1)plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) #指定繪制函數(shù)的圖像plt.xlabel("Time(s)") #設置x坐標名稱plt.ylabel("Volt") #設置y坐標名稱plt.title("FirstExample") #設置圖像標題plt.ylim(-1.2,1.2) #y坐標表示范圍plt.legend() #設置圖例plt.show() #圖像展示3.2基本繪圖plot命令233.2基本繪圖plot命令24參數(shù)說明如下:(1)label:給所繪制的曲線標定一個名稱,此名稱在圖示(lengend)中顯示,只要在字符串前添加“$”,Matplotlib就會使用其內嵌的latex引擎繪制數(shù)學公式。(2)color:指定曲線的顏色。(3)linewidth:指定曲線的寬度。(4)xlabel:設置X軸的文字。(5)ylabel:設置Y軸的文字。(6)title:設置圖表標題。(7)ylim:設置Y軸的范圍,格式為[y的起點,y的終點]。(8)xlim:設置X軸的范圍,格式為[x的起點,x的終點]。(9)legend:顯示label中標記的圖示。3.2基本繪圖plot命令25關于plot函數(shù)顏色參數(shù)說明如下:顏色標記顏色標記藍色b綠色G紅色r黃色Y青色c黑色K洋紅色m白色W3.2基本繪圖plot命令26關于plot函數(shù)線型參數(shù)取值說明如下:參數(shù)描述參數(shù)描述‘-’實線‘-’或者’:’虛線‘-.’點畫線‘none’或者’’不畫3.3繪制多窗口圖形27一個繪制對象(figure)可以包含多個軸(axis),在Matplotlib中用軸表示一個繪圖區(qū)域,可以將其理解為子圖??梢允褂胹ubplot函數(shù)快速繪制有多軸的圖表。實現(xiàn)代碼如下:importmatplotlib.pyplotasplt #導入matplotlib模塊繪制多窗口圖形plt.subplot(1,2,1) #繪制多軸圖例第一幅圖plt.plot(x,y,color="red",linewidth=2) #傳入參數(shù),設置顏色和線條寬度plt.xlabel("Time(s)") #設置x軸名稱plt.ylabel("Volt") #設置y軸名稱plt.title("FirstExample") #設置標題plt.ylim(-1.2,1.2) #設置表示范圍plt.axis([-8,0,-1.2,1.2])plt.legend()3.3繪制多窗口圖形28plt.subplot(1,2,2) #繪制多軸圖例的第二幅圖plt.plot(x,y,"b--")plt.xlabel("Time(s)")plt.ylabel("Volt")plt.title("SecondExample")plt.ylim(-1.2,1.2)plt.legend()plt.show()3.3繪制多窗口圖形293.4文本注釋30在數(shù)據可視化的過程中,可以通過annotate()方法在圖片中使用文字注釋圖中的一些特征,在使用annotate時,要考慮兩個點的坐標:被注釋的地方,使用坐標xy=(x,y)給出;插入文本的地方,使用坐標xytext=(x,y)給出,實現(xiàn)代碼如下所示:importnumpyasnp #導入numpy模塊importmatplotlib.pyplotasplt #導入matplotlib模塊x=np.arange(0.0,5.0,0.01) #使用numpy模塊中的arange函數(shù)生成數(shù)字序列y=np.cos(2*np.pi*x)plt.plot(x,y) #繪制圖形plt.annotate('localmax',xy=(2,1),xytext=(3,1.5)) #使用annotate函數(shù)對圖形進行注釋arrowprops=dict(facecolor="black",shrink=0.05)plt.ylim(-2,2)plt.show()3.4文本注釋31在寫代碼過程中,如果發(fā)現(xiàn)輸入中文時存在無法正常顯示,這通常是因為缺少中文字體庫造成的,只需要手動添加中文字體即可解決該問題,實現(xiàn)代碼如下所示:importmatplotlib.pyplotasplt #導入matplotlib模塊plt.figure(1) #繪制圖像plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)plt.xlabel("時間(秒)") plt.ylabel("電壓")plt.title("正弦波")plt.ylim(-1.2,1.2)plt.legend()plt.show()mpl.rcParams['font.sans-serif']=['SimHei'] #系統(tǒng)字體,顯示中文plt.rcParams['axes.unicode_minus']=False3.4文本注釋32Scipy四4.1Scipy34Scipy是一個用于數(shù)學、科學及工程方面的常用軟件包,Scipy包含科學計算中常見問題的各個工具箱。Scipy函數(shù)庫在NumPy庫的基礎上增加了許多的數(shù)學、科學及工程計算中常用的庫函數(shù),如線性代數(shù)、常微分方程數(shù)值求解、信號處理、圖像處理、稀疏矩陣等。它通過有效地計算NumPy矩陣,來讓NumPy和Scipy協(xié)同工作。Scipy庫在Windows下的具體安裝方法如下:pipinstallScipy使用Scipy計算庫,需要使用import語句引入該模塊,代碼如下所示::importScipy或者fromScipyimport*4.2最小二乘法35
4.2最小二乘法364.2最小二乘法374.3非線性方程求解38Scipy的optimize庫中的fsolve函數(shù)可以用來對非線性方程組進行求解,它的基本調用形式:fsolve(func,x_0),其中func(x)是計算方程組的函數(shù),它的參數(shù)x是一個矢量,表示方程組的各個未知數(shù)的一組可能解,func(x)返回x帶入方程組之后得到的結果,x_0為未知數(shù)矢量的初始值。4.3非線性方程求解39Scikit-Learn五5Scikit-Learn41Scikit-learn項目最早由數(shù)據科學家DavidCournapeau在2007年發(fā)起,需要NumPy和Scipy等其他包的支持,是Python語言中專門針對機器學習應用而發(fā)展起來的一款開源的框架。Scikit-learn的基本功能主要被分為以下幾個部分:分類:是指識別給定對象的所述類別,屬于監(jiān)督學習的范疇,最常見的應用場景包括垃圾郵件檢測和圖像識別等,目前Scikit-learn已經實現(xiàn)的算法包括支持向量機(SVM)、K-近鄰、隨機森林、決策樹及多層感知器(MLP)神經網絡等?;貧w:是指預測與給定對象相關聯(lián)的連續(xù)值屬性,最常用的應用場景包括藥物反應和預測股票價格等,目前Scikit-learn已經實現(xiàn)的算法包括支持向量回歸(SVR)、嶺回歸、Lasso回歸、貝葉斯回歸等。5Scikit-Learn42聚類:是指自動識別具有相似屬性的給定對象,并將其分組為集合,屬于無監(jiān)督學習的范疇,最常見的應用場景包括顧客細分和實驗結果分組。目前Scikit-learn已經實現(xiàn)的算法包括K-均值聚類、均值偏移、分層聚類等。數(shù)據降維:是指使用主成分分析(PCA)、非負矩陣分解(NMF)或特征選擇等降維技術來減少要考慮的隨機變量的個數(shù),其主要應用場景包括可視化處理和效率提升。模型選擇:是指對于給定參數(shù)和模型的比較、驗證和選擇,其主要目的是通過參數(shù)調整來提升精度,目前Scikit-learn已經實現(xiàn)的算法包括格點搜索、交叉驗證和各種針對預測誤差評估的度量函數(shù)5Scikit-Learn43數(shù)據預處理:是指數(shù)據的特征提取和歸一化,是機器學習過程中的第一個也是最重要的環(huán)節(jié)。這里歸一化是指將輸入數(shù)據轉換為具有零均值和單位權方差的新變量,特征提取是指將文本或圖像數(shù)據轉換為可用機器學習的數(shù)字變量。綜上所述,作為專門面向機器學習的Python開源框架,Scikit-learn可以在一定范圍內為開發(fā)者提供非常好的幫助,它內部實現(xiàn)了各種各樣成熟的算法,容易安裝和使用。5.1Scikit-Learn的安裝44Scikit-Learn庫在Windows下的具體安裝步驟如下:pipinstallScikit-Learn5.2Scikit-Learn的數(shù)據集45序號數(shù)據集名稱主要調用方式數(shù)據描述1鳶尾花數(shù)據集Load_iris()用于多分類任務的數(shù)據集2波士頓房價數(shù)據集Load_boston()經典的用于回歸任務的數(shù)據集3糖尿病數(shù)據集Load_diabetes()經典的用于回歸任務的數(shù)據集4手寫數(shù)字數(shù)據集Load_digits()用于多分類的任務的數(shù)據集5乳腺癌數(shù)據集Load_breast_cancer()簡單經典的用于二分類任務的數(shù)據集6體能訓練數(shù)據集Load_linnerud()經典的用于多變量回歸任務的數(shù)據集5.3Scikit-Learn的使用46獲取數(shù)據集(鳶尾花):fromsklearn.datasetsimportload_irisiris_dataset=load_iris()查看數(shù)據集的內容,實現(xiàn)代碼如下所示:print("keyofiris_dataset:\n{}".format(iris_dataset.keys()))運行上述代碼,得到關于鳶尾花數(shù)據集的關鍵詞,各個關鍵詞具體表示內容如下所示:(1)‘data’:可以理解為特征矩陣,里面是花萼長度、花萼寬度、花瓣長度、花瓣寬度的測量數(shù)據;(2)‘target’:樣本的標簽(每個樣本對應的類別,一共3類,分別用‘0’,‘1’,‘2’表示),是一個一維數(shù)組;(3)‘target_names’:花的種類,包括'setosa','versicolor','virginica'這3類;(4)‘DESCR’:是一篇說明文檔,對該數(shù)據集進行了一個簡要的說明(5)‘feature_names’:特征的名稱,包括花萼長度、花萼寬度、花瓣長度、花瓣寬度;(6)‘filename’:該數(shù)據集的文件名(帶絕對路徑)。5.3Scikit-Learn的使用47檢查數(shù)據,檢查該數(shù)據集是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于人工智能的智能交通管理系統(tǒng)預案
- 餐飲行業(yè)廚師勞動合同
- 年度辦公室工作任務安排表
- 如何理解和運用動詞:七年級英語語法專題
- 初中語法銜接教學方案:go與going的區(qū)別
- 血液(第一課時)課件 2024-2025學年北師大版生物七年級下冊
- 產品性能分析表格
- 法律英語案例分析與法律翻譯試題集
- 企業(yè)股份結構優(yōu)化提議書
- 2024-2025學年高二化學人教版選擇性必修3教學課件 第五章 第二節(jié) 高分子材料
- (已壓縮)礦產資源儲量技術標準解讀300問-1-90
- 醫(yī)院培訓課件:《靜脈中等長度導管臨床應用專家共識》
- 2023江蘇護理職業(yè)學院高職單招語文/數(shù)學/英語筆試參考題庫含答案解析
- 染色體實驗室質量控制
- NB/T 10742-2021智能化綜采工作面設計規(guī)范
- YY/T 0967-2022牙科學旋轉和往復運動器械的桿
- GB/T 2934-2007聯(lián)運通用平托盤主要尺寸及公差
- GB/T 29334-2012用于非石油基液壓制動液的汽車液壓制動缸用的彈性體皮碗和密封圈
- GB/T 14706-1993校對符號及其用法
- 高二數(shù)學平面向量的基本定理
- 高中美術-美術鑒賞《審美自律》
評論
0/150
提交評論