




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章概論西華大學機器學習第二章Python機器學習基礎庫XXX學校XXX2022目錄ContentsNumpyPandasMatplotlibScipyScikit-LearnTensorFlow
本章知識圖譜3
Numpy一1Numpy庫5Numpy(NumericPython)庫是Python當中一個開源的數(shù)值計算擴展庫,它可用來存儲和處理大型矩陣,比Python自身的嵌套列表(nestedliststructure)結構要高效得多(該結構也可以用來表示矩陣(matrix))。Numpy和稀疏矩陣運算包Scipy配合使用更加方便。Numpy提供了許多高級的數(shù)值編程工具,如:矩陣數(shù)據(jù)類型、矢量處理,以及精密的運算庫,多用于嚴格的數(shù)字處理,在很多大型金融公司業(yè)務中廣泛使用,一些核心的科學計算組織(如:LawrenceLivermore,NASA等)用其處理一些本來使用C++,F(xiàn)ortran或Matlab等完成的任務。1.1Numpy庫的安裝6Numpy庫在Windows下可以通過下面的步驟進行安裝:
啟動Anaconda下面的“AnacondaPrompt”或系統(tǒng)的“cmd”命令窗口,輸入如下命令即可完成安裝:pipinstallnumpy1.2Numpy庫的導入7
首先,在使用Numpy庫之前,我們需要使用import語句引入該模塊,代碼如下所示:importnumpyasnp#導入numpy模塊并命名為np,方便后面調用
或者:fromnumpyimport*1.2Numpy庫的導入8import語句和from…import語句的區(qū)別:import…語句:直接導入一個模塊,同一模塊不管執(zhí)行多少次,import都只會被導入一次。from…import…語句:導入一個模塊中的一個函數(shù)。import引入模塊之后,如果需要使用模塊里的函數(shù)方法,則需要加上模塊的限定名字,而from…import語句則不用加模塊的限定名字,直接使用其函數(shù)方法即可。1.3創(chuàng)建數(shù)組9a=np.array([1,2,3,4])#創(chuàng)建一維數(shù)組b=np.array([5,6,7,8])c=np.array([1,2,3,4],[5,6,7,8],[7,8,9,10])#創(chuàng)建二維數(shù)組
創(chuàng)建一維數(shù)組和二維數(shù)組的代碼:
數(shù)組的大小可以通過其shape屬性獲得,例:a.shapeb.shapec.shape1.3創(chuàng)建數(shù)組10c.shape=(4,3)修改數(shù)組的shape屬性的代碼:創(chuàng)建一個改變尺寸的新數(shù)組,原數(shù)組保持不變,代碼如下:d=a.reshape((2,2))a[1]=10修改數(shù)組中指定位置的元素的代碼:1.4查詢數(shù)組類型11
數(shù)組的元素類型可以通過dtype屬性獲得,實現(xiàn)代碼如下:
通過dtype參數(shù)在創(chuàng)建數(shù)組的時候指定元素類型,實現(xiàn)代碼如下:e=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]],dtype=np.float)
a.dtype1.5查詢數(shù)組類型121.arange()函數(shù)類似于Python的range()函數(shù),通過指定開始值、終值和步長來創(chuàng)建一維數(shù)組(注意數(shù)組不包括終值),實現(xiàn)代碼如下:f=np.arrange(0,1,0.1)2.linspace()函數(shù)通過指定開始值、終值和元素個數(shù)來創(chuàng)建一維數(shù)組(等差數(shù)列),可以通過endpoint關鍵字指定是否包括終值(默認設置包括終值),實現(xiàn)代碼如下:g=np.linsspace(0,1,12)1.5查詢數(shù)組類型133.logspace()函數(shù)和linspace()類似,但是它創(chuàng)建的是等比數(shù)列,實現(xiàn)代碼如下:h=np.logspace(0,2,10)1.6數(shù)組元素的存取14
數(shù)組元素的存取方法和Python標準方法相同,代碼如下:a=np.arange(10)以下代碼可以實現(xiàn)對數(shù)組中部分連續(xù)元素的存?。篴[3:5]1.7ufunc運算15ufunc是universalfunction的縮寫,是一種能對ndarray的每個元素進行操作的函數(shù)。它支持數(shù)組廣播、類型轉換和其他一些標準功能。也就是說,ufunc是函數(shù)的“矢量化”包裝器,它接受固定數(shù)量的特定輸入并生成固定數(shù)量的特定輸出。NumPy內置的許多ufunc函數(shù)是在C語言級別實現(xiàn)的,因此它們的計算速度非???。比如numpy.sin()的速度就比Python自帶的math.sin()的速度要快得多。1.8矩陣的運算16a=np.matrix(‘12;34’)b=a.T#返回矩陣a的轉置矩陣并存儲于bc=a.I#返回矩陣a的逆矩陣并存儲于c
Numpy庫提供了matrix類,使用matrix類創(chuàng)建的是矩陣對象,它們的加、減、乘、除運算默認采用矩陣方式,因此其用法和Matlab十分相似。具體使用方法如下:1.8矩陣的運算17a=np.zeros(5,),dtype=#使用zero方法創(chuàng)建0矩陣
b=np.empty#使用empty方法創(chuàng)建一個2行4列任意數(shù)據(jù)的矩陣c=np.array([1,2,3],[4,5,6])#使用array方法創(chuàng)建換一個2行3列指定數(shù)據(jù)的矩陣d=np.dot(b,c)#使用dot函數(shù)實現(xiàn)交叉運算
由于Numpy中同時存在ndarray和matrix對象,讀者很容易混淆,一般情況下,不推薦在較復雜的程序中使用matix,通??梢酝ㄟ^ndarray對數(shù)組進行各種操作來實現(xiàn)矩陣運算。下面是一些創(chuàng)建特殊矩陣的代碼示例:
Pandas二2Pandas庫的安裝19Pandas是Python的一個數(shù)據(jù)分析包,最初是由AQRCapitalManagement于2008年4月開發(fā)的,目前由專注于Python數(shù)據(jù)包開發(fā)的PyData開發(fā)團隊繼續(xù)開發(fā)和維護,屬于PyData項目的一個部分。Pandas的名稱來自面板數(shù)據(jù)和Python數(shù)據(jù)分析。Pandas引入了大量庫和一些標準的數(shù)據(jù)模型,提供了高效的操作大型數(shù)據(jù)集所需要的工具。Pandas也提供了大量可以快速便捷處理數(shù)據(jù)的函數(shù)和方法,是Python成為強大而高效的數(shù)據(jù)分析工具的重要因素之一。Pandas的基本數(shù)據(jù)結構是Series和DataFrame。其中Series稱為序列,用于產(chǎn)生一個一維數(shù)組,DataFrame用于產(chǎn)生二維數(shù)組,它的每一列都是一個Series。2.1Pandas庫的安裝20
在Windows下,Pandas庫可以通過啟動Anaconda下的“AnacondaPrompt”或系統(tǒng)的“cmd”命令窗口,輸入如下命令完成安裝:pipinstallpandas2.2Pandas庫的導入21使用Pandas庫,首先需要使用import語句引入該模塊,代碼如下:importpandasaspd或者:frompandasimport*2.3Series22
Series是一維標記數(shù)組,可以存儲任意數(shù)據(jù)類型,如整型、字符串、浮點型和Python對象等,軸的標簽稱為索引(index)。
frompandasimportSeries,DataFrame#通過傳遞一個list對象來創(chuàng)建Series,默認創(chuàng)建整型索引
a=Series([1,2,3,4])print("創(chuàng)建Series:\n",a)#創(chuàng)建一個用索引來決定每一個數(shù)據(jù)點的Seriesb=Series([1,2,3,4],index=['a','b','c','d’])print("創(chuàng)建帶有索引的Series:\n",b)#如果有一些數(shù)據(jù)在一個Python字典中,可以通過傳遞字典來創(chuàng)建一個Seriessdata={'Tom':123456,"John":12654,"Cindy":123445}
2.4DataFrame23DataFrame是二維標記數(shù)據(jù)結構,其列可以是不同的數(shù)據(jù)類型,它是最常用的Pandas對象,像Series一樣可以接收多種輸入(lists、dicts、series和DataFrame等)。
#DataFrame的簡單實例代碼如下:frompandasimportSeries,DataFrame
#創(chuàng)建一個空的DataFramedf=DataFrame(columns={"a":"","b":"","c":""},index=[0])
a=[['2','1.2','4.2'],['0','10','0.3'],['1','5','0’]]print(df)#使用list的數(shù)據(jù)創(chuàng)建DataFramedf=DataFrame(a,columns=['one','two','three’]) print(df)
Matplotlip三3Matplotlip庫Matplotlib是Python的一個繪圖庫,是Python中最常用的可視化工具之一,可以非常方便地創(chuàng)建2D圖表和3D圖表。通過Matplotlib,開發(fā)者可能僅需要幾行代碼,便可以生成各種圖表,如直方圖、條形圖、散點圖等。它提供了一整套和Matlab相似的命令API,十分適合交互式制圖。也可以方便地將Matplotlib作為繪圖控件,嵌入GUI應用程序中。3.1Matplotlip安裝
在Windows下,Matplotlib庫可以通過啟動Anaconda下的“AnacondaPrompt”或系統(tǒng)的“cmd”命令窗口,輸入如下命令完成安裝:pipinstallmatplotlip3.2Matplotlip庫的導入27使用Matplotlib庫之前需要先使用import語句引入該模塊,代碼如下:importmatplotlipaspd或者:frommatplotlipimport*3.3基本繪圖plot命令Matplotlib庫中,最常使用的命令就是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.3基本繪圖plot命令3.3基本繪圖plot命令參數(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.3基本繪圖plot命令關于plot函數(shù)顏色參數(shù)說明如下:顏色標記顏色標記藍色b綠色G紅色r黃色Y青色c黑色K洋紅色m白色W3.3基本繪圖plot命令關于plot函數(shù)線型參數(shù)取值說明如下:參數(shù)描述參數(shù)描述‘-’實線‘-’或者’:’虛線‘-.’點畫線‘none’或者’’不畫3.4繪制多窗口圖形一個繪制對象(figure)可以包含多個軸(axis),在Matplotlib中用軸表示一個繪圖區(qū)域,可以將其理解為子圖??梢允褂胹ubplot函數(shù)快速繪制有多軸的圖表。實現(xiàn)代碼如下:importmatplotlib.pyplotasplt #導入matplotlib模塊繪制多窗口圖形plt.subplot(1,2,1) #繪制多軸圖例第一幅圖plt.plot(x,y,color="red",linewidth=2) #傳入?yún)?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.4繪制多窗口圖形plt.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.4繪制多窗口圖形3.5文本注釋在數(shù)據(jù)可視化的過程中,可以通過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.5文本注釋在寫代碼過程中,如果發(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.5文本注釋Scipy四4.1ScipyScipy是一個用于數(shù)學、科學及工程方面的常用軟件包,Scipy包含科學計算中常見問題的各個工具箱。Scipy函數(shù)庫在NumPy庫的基礎上增加了許多的數(shù)學、科學及工程計算中常用的庫函數(shù),如線性代數(shù)、常微分方程數(shù)值求解、信號處理、圖像處理、稀疏矩陣等。它通過有效地計算NumPy矩陣,來讓NumPy和Scipy協(xié)同工作。4.1ScipypipinstallscipyScipy庫在Windows下可以通過下面的步驟進行安裝:
啟動Anaconda下面的“AnacondaPrompt”或系統(tǒng)的“cmd”命令窗口,輸入如下命令即可完成安裝:4.2Scipy庫的導入42使用Scipy庫之前需要先使用import語句引入該模塊,代碼如下:importscipyaspd或者:fromscipyimport*4.3最小二乘法
4.3最小二乘法4.3最小二乘法4.3非線性方程求解46Scipy的optimize庫中的fsolve函數(shù)可以用來對非線性方程組進行求解,它的基本調用形式:fsolve(func,x_0),其中func(x)是計算方程組的函數(shù),它的參數(shù)x是一個矢量,表示方程組的各個未知數(shù)的一組可能解,func(x)返回x帶入方程組之后得到的結果,x_0為未知數(shù)矢量的初始值。4.3非線性方程求解47Scikit-Learn五5Scikit-Learn49Scikit-learn項目最早由數(shù)據(jù)科學家DavidCournapeau在2007年發(fā)起,需要NumPy和Scipy等其他包的支持,是Python語言中專門針對機器學習應用而發(fā)展起來的一款開源的框架。Scikit-learn的基本功能主要被分為以下幾個部分:分類:是指識別給定對象的所述類別,屬于監(jiān)督學習的范疇,最常見的應用場景包括垃圾郵件檢測和圖像識別等,目前Scikit-learn已經(jīng)實現(xiàn)的算法包括支持向量機(SVM)、K-近鄰、隨機森林、決策樹及多層感知器(MLP)神經(jīng)網(wǎng)絡等?;貧w:是指預測與給定對象相關聯(lián)的連續(xù)值屬性,最常用的應用場景包括藥物反應和預測股票價格等,目前Scikit-learn已經(jīng)實現(xiàn)的算法包括支持向量回歸(SVR)、嶺回歸、Lasso回歸、貝葉斯回歸等。5Scikit-Learn50聚類:是指自動識別具有相似屬性的給定對象,并將其分組為集合,屬于無監(jiān)督學習的范疇,最常見的應用場景包括顧客細分和實驗結果分組。目前Scikit-learn已經(jīng)實現(xiàn)的算法包括K-均值聚類、均值偏移、分層聚類等。數(shù)據(jù)降維:是指使用主成分分析(PCA)、非負矩陣分解(NMF)或特征選擇等降維技術來減少要考慮的隨機變量的個數(shù),其主要應用場景包括可視化處理和效率提升。模型選擇:是指對于給定參數(shù)和模型的比較、驗證和選擇,其主要目的是通過參數(shù)調整來提升精度,目前Scikit-learn已經(jīng)實現(xiàn)的算法包括格點搜索、交叉驗證和各種針對預測誤差評估的度量函數(shù)5Scikit-Learn51數(shù)據(jù)預處理:是指數(shù)據(jù)的特征提取和歸一化,是機器學習過程中的第一個也是最重要的環(huán)節(jié)。這里歸一化是指將輸入數(shù)據(jù)轉換為具有零均值和單位權方差的新變量,特征提取是指將文本或圖像數(shù)據(jù)轉換為可用機器學習的數(shù)字變量。綜上所述,作為專門面向機器學習的Python開源框架,Scikit-learn可以在一定范圍內為開發(fā)者提供非常好的幫助,它內部實現(xiàn)了各種各樣成熟的算法,容易安裝和使用。5.1Scikit-Learn的安裝pipinstallScikit_LearnScikit-Learn庫在Windows下的具體安裝步驟如下:
啟動Anaconda下面的“AnacondaPrompt”或系統(tǒng)的“cmd”命令窗口,輸入如下命令即可完成安裝:5.2Scikit-Learn的數(shù)據(jù)集53序號數(shù)據(jù)集名稱主要調用方式數(shù)據(jù)描述1鳶尾花數(shù)據(jù)集Load_iris()用于多分類任務的數(shù)據(jù)集2波士頓房價數(shù)據(jù)集Load_boston()經(jīng)典的用于回歸任務的數(shù)據(jù)集3糖尿病數(shù)據(jù)集Load_diabetes()經(jīng)典的用于回歸任務的數(shù)據(jù)集4手寫數(shù)字數(shù)據(jù)集Load_digits()用于多分類的任務的數(shù)據(jù)集5乳腺癌數(shù)據(jù)集Load_breast_cancer()簡單經(jīng)典的用于二分類任務的數(shù)據(jù)集6體能訓練數(shù)據(jù)集Load_linnerud()經(jīng)典的用于多變量回歸任務的數(shù)據(jù)集TensorFlow六6TensorFlowTensorFlow是一個深度學習庫,由Google開源,可以對定義在Tensor(張量)上的函數(shù)自動求導。Tensor意味著N維數(shù)組,F(xiàn)low(流)意味著基于數(shù)據(jù)流圖的計算,TensorFlow即為張量從圖的一端流動到另一端。
要正常使用TensorFlow,必須了解兩個基本概念:Tensor和Flow,即張量和數(shù)據(jù)流圖.1.張量(Tensor)
張量是一種表示物理量的方式,這個方式就是用基向量與分量組合表示物理量(Combinationofbasisvectorandcomponent)。6TensorFlow標量,0個基向量:0-modetensor向量,1個基向量:1-modetensor矩陣,2個基向量:2-modetensor…張量可以表示為多維數(shù)組(atensorcanberepresentedasamultidimensionalarrayofnumbers)6TensorFlow2.數(shù)據(jù)流圖(DataFlowGraphs)
用TensorFlow進行機器學習模型計算的時候,通常包含兩個階段:
第一階段:“組裝”一個計算圖(Graph)。這個圖就描述了用于機器學
習的模型的結構。如果讀者熟悉以前微軟的DirectShow開發(fā),就能過很容易的理解,此處的Graph和DirectShow里的FilterGraphs有異曲同工之處。
第二階段:使用一個Session在圖中進行操作。6.1TensorFlow的安裝pipinstallTens
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吳家窯11號線施工方案
- 路基堆土預壓施工方案
- 提灌站維護施工方案
- 福建海鮮冷庫施工方案
- 鉆空施工方案
- 年加工300萬噸尾礦廢料改擴建及技術改造項目環(huán)評報告表
- 一級建造師瀝青施工方案
- 海南汽車變速箱保稅維修項目環(huán)評報告表
- 蒼南縣二模數(shù)學試卷
- 洛陽戶外兒童游樂施工方案
- 一年級下冊語文課件《2-我多想去看看》人教部編版-20
- TIAC 27-2019《機動車保險車聯(lián)網(wǎng)數(shù)據(jù)采集規(guī)范》
- 2016-2023年株洲師范高等??茖W校高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 項目成本管控要素清單
- 歌唱二小放牛郎 金巍 女聲合唱譜
- 基層公職人員禁毒知識講座
- 中小學生綜合實踐基地(學校)考核指標體系評分標準
- 創(chuàng)新素養(yǎng)的培養(yǎng)
- 2024深海礦產(chǎn)資源開采系統(tǒng)技術指南
- 一+《展示國家工程++了解工匠貢獻》(教學課件)-【中職專用】高二語文精講課堂(高教版2023·職業(yè)模塊)
- 重視心血管-腎臟-代謝綜合征(CKM)
評論
0/150
提交評論