版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章機(jī)器學(xué)習(xí)基礎(chǔ)及Python常用庫(kù)目錄CONTENTS2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境2.2機(jī)器學(xué)習(xí)基礎(chǔ)2.3本章小結(jié)2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境學(xué)習(xí)基礎(chǔ)學(xué)習(xí)認(rèn)知能力信息素養(yǎng)高2.1.1Python開(kāi)發(fā)環(huán)境簡(jiǎn)介Spyder是一款強(qiáng)大的交互式Python語(yǔ)言開(kāi)發(fā)工具,提供高級(jí)的代碼編輯、交互測(cè)試、調(diào)試等特性,它主要用于數(shù)據(jù)科學(xué)領(lǐng)域,具有高級(jí)編輯、分析、數(shù)據(jù)可視化和調(diào)試等功能,開(kāi)發(fā)界面設(shè)計(jì)類(lèi)似于MATLAB。Spyder開(kāi)發(fā)環(huán)境如圖2-1所示。PyCharm、Anaconda是Python常見(jiàn)的開(kāi)發(fā)環(huán)境,其中Anaconda包含了Python常用的庫(kù),自帶有JupyterNoteBook、Spyder開(kāi)發(fā)工具,且具有強(qiáng)大的版本管理功能,對(duì)不同版本的工具包的安裝有很好的支持。2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境JupyterNotebook以網(wǎng)頁(yè)的形式呈現(xiàn),可在網(wǎng)頁(yè)頁(yè)面中直接編寫(xiě)代碼和運(yùn)行代碼,支持使用LaTeX編寫(xiě)數(shù)學(xué)性說(shuō)明。JupterNoteBook開(kāi)發(fā)環(huán)境如圖2-2所示。2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境近鄰算法原理PyCharm是由著名的軟件開(kāi)發(fā)公司JetBrains專(zhuān)門(mén)為Python開(kāi)發(fā)人員打造的一款功能強(qiáng)大的Python集成開(kāi)發(fā)環(huán)境,它包含智能提示、語(yǔ)法高亮、程序調(diào)試、Project管理、代碼跳轉(zhuǎn)、版本控制等功能。2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境Python是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,擁有int、float、byte、bool等基本數(shù)據(jù)類(lèi)型,以及l(fā)ist(列表)、tuple(元組)、dict(字典)等功能強(qiáng)大、使用靈活的序列類(lèi)型。#計(jì)算前n個(gè)數(shù)的和sum=0foriinrange(11):sum+=iprint("sum=",sum)sum=552.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境(1)range()函數(shù)的作用是返回一個(gè)迭代對(duì)象,其語(yǔ)法格式如下:range(start,stop[,step])(2)in是成員測(cè)試運(yùn)算符,用于測(cè)試一個(gè)對(duì)象是否是另一個(gè)對(duì)象中的元素。#成員測(cè)試flag=5in[1,2,3,4,5]print(flag)foriin(10,11,12,13,14):print(i,end='')True10111213142.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境(3)map()函數(shù)根據(jù)提供的函數(shù)對(duì)指定序列進(jìn)行映射,其語(yǔ)法格式如下:map(function,iterable,...)其中,參數(shù)function表示函數(shù),參數(shù)iterable表示序列,可以為多個(gè)序列。#計(jì)算每個(gè)數(shù)的平方x=[1,2,3,4,5]res=map(lambdai:i**2,x)print(list(res))[1,4,9,16,25]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境defdiv2(x):#函數(shù)定義,將x除以2returnx/2defsum(x,y):#函數(shù)定義,求兩個(gè)數(shù)的和returnx+yprint(list(map(div2,[10,20,30,40,50])))#將列表中各元素除以2print(list(map(sum,[1,2,3,4,5],[6,7,8,9,10])))#計(jì)算兩個(gè)列表中對(duì)應(yīng)元素之和[5.0,10.0,15.0,20.0,25.0][7,9,11,13,15]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境1.列表列表是一種可變序列,用于存儲(chǔ)若干元素,其地址空間是連續(xù)的,類(lèi)似于Java、C++中的數(shù)組。x=[1,2,'a',"b","abc",23.56,(10,20,30),[60,70,80]]foriinx:print(i)程序運(yùn)行結(jié)果如下:2ababc23.56(10,20,30)[60,70,80]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境x=[1,2,'a',"b","abc",23.56]foriinrange(len(x)):print(x[i],end='')程序運(yùn)行結(jié)果如下:12ababc23.56x=[1,2,3]x=x+[5]print(x)x.append(10)print(x)x.extend([10,20,30])print(x)x.insert(5,100)print(x)x.remove(20)print(x)print(x.pop())print(x)[1,2,3,5][1,2,3,5,10][1,2,3,5,10,10,20,30][1,2,3,5,10,100,10,20,30][1,2,3,5,10,100,10,30]30[1,2,3,5,10,100,10]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境Python與Java、C++語(yǔ)言最大的區(qū)別就是序列的切片操作,列表、元組、字符串、range對(duì)象都支持切片操作。切片由兩個(gè)冒號(hào)分隔的3個(gè)數(shù)字組成,其語(yǔ)法格式為:[start:stop:step]start表示切片的開(kāi)始位置,stop表示切片的結(jié)束位置,但不包含該結(jié)束位置,step表示步長(zhǎng)(默認(rèn)為1),當(dāng)步長(zhǎng)省略時(shí),最后一個(gè)冒號(hào)也可以省略。例如:m=[10,20,30,40,50,60]print(m[2:len(m)])print(m[::])print(m[::-1])[30,40,50,60][10,20,30,40,50,60][60,50,40,30,20,10]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境在數(shù)據(jù)處理過(guò)程中,經(jīng)常會(huì)遇到嵌套列表,如果要取嵌套列表中的某一行元素或某一列元素,則需要列表推導(dǎo)式。例如:a=[[1,2,3],[4,5,6]]print(a[0])#取一行#print(a[:,0])#這樣寫(xiě)會(huì)產(chǎn)生錯(cuò)誤TypeError:listindicesmustbeintegersorslices,nottupleb=[x[0]forxina]#取嵌套列表中的第1列元素print(b)程序運(yùn)行結(jié)果如下:[1,2,3][1,4]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境元組與列表類(lèi)似,其區(qū)別在于元組是不可變的序列。列表支持元素引用,但不支持修改、增加與刪除操作。a=(1,2,3,4,5)#創(chuàng)建元組aprint(a)foriina:print(i,end='')程序運(yùn)行結(jié)果如下:(1,2,3,4,5)123452.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境zip()函數(shù)可將多個(gè)可迭代對(duì)象按照相應(yīng)位置上的元素組合為元組,然后返回由這些元組組成的zip對(duì)象。如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長(zhǎng)度與最短的對(duì)象相同。a=('name','age','grade','tel')b=('張三',25,'大三'fori,jinzip(a,b):print(i,j,end=';')c=(i*2foriinrange(10))print(tuple(c))name張三;age25;grade大三;te(0,2,4,6,8,10,12,14,16,18)2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境字典是由若干“鍵-值”對(duì)構(gòu)成的無(wú)序序列,字典中每個(gè)元素由兩部分組成:鍵和值。其中,鍵的取值可以是任意不變的數(shù)據(jù)類(lèi)型,如整數(shù)、浮點(diǎn)數(shù)、字符串、元組等,但不能是列表、字典、集合等可變的數(shù)據(jù)類(lèi)型。key=['101','102','103','104','105']value=[10,9,8,7,6]dic=dict(zip(key,value))print(dic)print(dic['102'])dic['106']=10dic['101']=5fori,jindic.items():print(i,j,sep=':'){'101':10,'102':9,'103':8,'104':7,'105':6}9101:5102:9103:8104:7105:6106:102.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境集合也是一個(gè)無(wú)序的可變序列,同一個(gè)集合中的對(duì)象不能重復(fù)出現(xiàn),這與數(shù)學(xué)中的集合具有同樣的性質(zhì)。集合運(yùn)算包括并集、交集、差集和子集等。例如:x=set(range(10))y={-1,-2,-3,5,6}z=x|y#并集print("x=",x)print("y=",y)print("并集操作:",z)z=x&y#交集print("交集操作:",z)z=x-y#差集print("差集操作:",z)z.pop()print(z)z.remove(3)print(z)x={0,1,2,3,4,5,6,7,8,9}y={5,6,-2,-3,-1}并集操作:{0,1,2,3,4,5,6,7,8,9,-1,-3,-2}交集操作:{5,6}差集操作:{0,1,2,3,4,7,8,9}{1,2,3,4,7,8,9}{1,2,4,7,8,9}2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境1.函數(shù)Python中的函數(shù)定義是以def關(guān)鍵詞開(kāi)頭,后面是函數(shù)名稱(chēng)和圓括號(hào),圓括號(hào)后面要加一個(gè)冒號(hào),表示函數(shù)聲明結(jié)束。圓括號(hào)內(nèi)是傳遞的參數(shù)列表。函數(shù)體中的語(yǔ)句以縮進(jìn)格式書(shū)寫(xiě),函數(shù)是否有返回值是根據(jù)函數(shù)體內(nèi)部是否有return語(yǔ)句決定的,如果有return語(yǔ)句,則表示該函數(shù)有返回值,否則表示沒(méi)有返回值。Accuracy:96.66666666666667%defmax_min_value(mylist):#定義函數(shù)
returnmylist.index(max(mylist)),mylist.index(min(mylist))#調(diào)用函數(shù)mylist=[36,16,33,52,68,100,70,85,6,75]max_min=max_min_value(mylist)print('最大值元素下標(biāo)和最小值元素下標(biāo):',max_min)最大值元素下標(biāo)和最小值元素下標(biāo):(5,8)2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境deffind(table,e):foriinrange(len(table)):iftable[i]==e:returnTrue,ielse:returnFalse,Nonemylist=[36,16,33,52,68,100,70,85,6,75]flag,value=find(mylist,85)print(flag,value)程序運(yùn)行結(jié)果如下:True72.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境2.類(lèi)Python是一門(mén)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,在一個(gè)模塊功能較多且考慮到系統(tǒng)的可維護(hù)性和可復(fù)用性,選擇類(lèi)來(lái)管理更為合適。#定義一個(gè)矩形類(lèi)classRectangle:def__init__(self,width,height):self.width=widthself.height=heightdefarea(self):returnself.width*self.height2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境創(chuàng)建矩形類(lèi)對(duì)象并調(diào)用成員方法area()的方法如下:#創(chuàng)建一個(gè)矩形對(duì)象并調(diào)用它的area()方法rectangle=Rectangle(6,9)print("矩形的面積為:",rectangle.area())運(yùn)行程序會(huì)輸出結(jié)果:矩形的面積為:542.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境在矩形類(lèi)定義的基礎(chǔ)上,還可以對(duì)矩形類(lèi)進(jìn)行繼承,假如定義一個(gè)立方體類(lèi),立方體是在矩形類(lèi)的基礎(chǔ)上,增加一個(gè)高構(gòu)成的,類(lèi)的定義如下:#定義一個(gè)立方體類(lèi),繼承自矩形類(lèi)classCube(Rectangle):def__init__(self,high):self.high=high#實(shí)現(xiàn)立方體類(lèi)的volume()方法
defvolume(self,rect):returnself.high*rect.area()2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境這樣就構(gòu)造了一個(gè)簡(jiǎn)單的立方體類(lèi)Cube,其中類(lèi)名Cube后面括號(hào)中的Rectangle就是要繼承的類(lèi)名,作為當(dāng)前類(lèi)Cube的父類(lèi)。#創(chuàng)建一個(gè)立方體對(duì)象并調(diào)用它的volume()方法cube=Cube(10)print("立方體的體積為:",cube.volume(rectangle))程序運(yùn)行結(jié)果如下:立方體的體積為:5402.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境同一個(gè)列表可存放不同類(lèi)型的數(shù)據(jù),而同一個(gè)array數(shù)組中存放的數(shù)據(jù)類(lèi)型必須全部相同。對(duì)于使用列表和array數(shù)組存儲(chǔ)的矩陣,如果想要取出同一列的元素,對(duì)于列表,需要使用列表推導(dǎo)式才能完成;對(duì)于array,直接使用切片即可。例如:importnumpyasnpa=np.array([[5,6,7],[8,9,10]])print(a[:,0])如果要獲取二維數(shù)組中某一行的均值或某一列的均值,可使用means()函數(shù)實(shí)現(xiàn),其語(yǔ)法格式如下:numpy.mean(a,axis=None,dtype=None,out=None,keepdims=<novalue>)2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境a=np.array([[1,2,3],[4,5,6]])print(a)m=np.mean(a)print(m)m=np.mean(a,axis=0)#axis=0,計(jì)算每一列的平均值print(m)m=np.mean(a,axis=1)#axis=1,計(jì)算每一行的平均值print(m)[[123][456]]3.5[2.53.54.5][2.5.]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境a=np.array([[1,2,3],[4,5,6],[7,8,9]])b=np.mat(a)print(b)print(np.mean(b)) #對(duì)所有元素求平均值print(np.mean(b,0)) #對(duì)各列求平均值print(np.mean(b,1)) #對(duì)各行求平均值
[[123][456][789]]5.0[[4.5.6.]][[2.][5.][8.]]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境#矩陣轉(zhuǎn)換為數(shù)組mat=np.mat([[1,2,3,4]])print(mat,type(mat))mat_arr=mat.Aprint(mat_arr,type(mat_arr))程序運(yùn)行結(jié)果如下:[[1234]]<class'numpy.matrix'>[[1234]]<class'numpy.ndarray'>2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境DataFrame是由多種類(lèi)型的列構(gòu)成的二維標(biāo)簽數(shù)據(jù)結(jié)構(gòu),類(lèi)似于Excel、SQL表、Series對(duì)象構(gòu)成的字典。DataFrame是最常用的Pandas對(duì)象,DataFrame支持ndarray、列表、字典、Series字典、DataFrame等多種數(shù)據(jù)類(lèi)型的輸入。DataFrame還可為數(shù)據(jù)自動(dòng)增加index(行標(biāo)簽)和columns(列標(biāo)簽)參數(shù),這樣就使生成的DataFrame數(shù)據(jù)包含行和列索引。利用字典生成DataFrame數(shù)據(jù),代碼如下:importpandasaspdstu_dict={'姓名':['張曉','許東燕'],'性別':['男','女'],'分?jǐn)?shù)':[86,95]}print(stu_dict)stu_df=pd.DataFrame(stu_dict)print(stu_df)程序運(yùn)行結(jié)果如下:{'姓名':['張曉','許東燕'],'性別':['男','女'],'分?jǐn)?shù)':[86,95]}
姓名性別分?jǐn)?shù)0張曉男861許東燕女952.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境利用Series字典生成DataFrame數(shù)據(jù),代碼如下:d={'姓名':pd.Series(['吳小倩','劉娜','許友林','李小婷'],index=['A','B','C','D']),'分?jǐn)?shù)':pd.Series([87,90,93],index=['A','B','D'])}df=pd.DataFrame(d)print(df)姓名分?jǐn)?shù)A吳小倩87.0B劉娜90.0C許友林NaND李小婷93.02.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境利用numpy多維數(shù)組生成DataFrame數(shù)據(jù),代碼如下:data=np.zeros((3,),dtype=[('A','i8'),('B','f8'),('C','S8')])df=pd.DataFrame(data)print(df)程序運(yùn)行結(jié)果如下:
ABC000.0b''100.0b''200.0b''2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境創(chuàng)建一個(gè)3行4列的隨機(jī)整數(shù)構(gòu)成的二維數(shù)組,然后將其轉(zhuǎn)換為DataFrame格式,代碼如下:data=np.random.randint(1,50,size=(3,4))df=pd.DataFrame(data,columns=['A','B','C','D'])print(df)輸出結(jié)果如下:
ABCD04613354134107222353342.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境若想要在第3列插入一組元素,則代碼如下:df.insert(2,'E',[10,20,30])#插入一列print(df)輸出結(jié)果如下:
ABECD04613103541341020722235303342.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境假設(shè)data.xlsx文件中有兩個(gè)工作表:Sheet1和Sheet2,其內(nèi)容如圖2-4所示。讀取data.xlsx文件中的數(shù)據(jù)代碼如下:importpandasaspdx=pd.read_excel('data.xlsx')輸出結(jié)果如下:序號(hào)姓名性別年齡職業(yè)01劉艷女26會(huì)計(jì)12劉娜女27會(huì)計(jì)23張旭剛男36工程師34吳甜甜女40教師45王剛男32醫(yī)生2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境假設(shè)data.xlsx文件中有兩個(gè)工作表:Sheet1和Sheet2,其內(nèi)容如圖2-4所示。讀取Excel文件時(shí),可以指定要讀取的工作表和列號(hào),代碼如下:x=pd.read_excel(r'data.xlsx',sheet_name=1,usecols="B,E")print(x)輸出結(jié)果如下:姓名職稱(chēng)0李闖工程師1趙剛高級(jí)工程師2王鵬飛教授級(jí)高級(jí)工程師2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境importpandasaspdimportnumpyasnp#創(chuàng)建寫(xiě)入器對(duì)象writer=pd.ExcelWriter('data.xlsx')start_row=0#指定從第幾行開(kāi)始寫(xiě)入data=np.random.randint(1,50,size=(3,4))data=pd.DataFrame(data,columns=['C1','C2','C3','C4'])data.to_excel(writer,sheet_name='Sheet1',startrow=start_row, header=True,index=False)#丟棄DataFrame對(duì)象的行標(biāo)簽#保存數(shù)據(jù),關(guān)閉文件writer.save()writer.close()2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境1.散點(diǎn)圖importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-5,5,50,endpoint=True)y=x**2plt.scatter(x,y,s=20,alpha=1,linewidths=0.1)plt.xlabel('X軸')plt.ylabel('Y軸')plt.title('散點(diǎn)圖')plt.rcParams['font.sans-serif']=['SimHei'] #顯示中文字體plt.rcParams['axes.unicode_minus']=False #顯示負(fù)號(hào)plt.show()2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境1.散點(diǎn)圖#生成數(shù)據(jù)1,具有兩維特征x_Attr1和x_Attr2num=500#數(shù)量x_Mean1=4x_Var1=0.5x_Attr1=np.zeros((num,1))x_Attr1=x_Mean1+np.sqrt(x_Var1)*np.random.randn(num,1)x_Mean2=2x_Var2=1x_Attr2=np.zeros((num,1))x_Attr2=x_Mean2+np.sqrt(x_Var2)*np.random.randn(num,1)x=np.c_[x_Attr1,x_Attr2]2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境折線圖可以顯示隨時(shí)間而變化的連續(xù)數(shù)據(jù),適用于顯示在相等時(shí)間間隔下數(shù)據(jù)的趨勢(shì)。x=[1,2,3,4,5,6,7,8]y=[0.62,0.68,0.76,0.81,0.815,0.814,0.816,0.815]plt.plot(x,y)plt.xlim(0,9)plt.ylim(0.6,0.85)plt.title('折線圖')plt.xlabel('X')plt.ylabel('Y')plt.rcParams['font.sans-serif']=['SimHei']#如果要顯示中文字體,則在此處設(shè)為SimHeiplt.rcParams['axes.unicode_minus']=Falseplt.show()2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境通過(guò)直方圖可繪制連續(xù)性的數(shù)據(jù),展示一組或多組數(shù)據(jù)的分布狀況x=np.random.standard_normal(100)bins=20n,bins,patches=plt.hist(x,bins,color='#0a6caa',alpha=0.7,rwidth=0.85)plt.grid(axis='y',alpha=0.75)plt.xlabel('區(qū)間')plt.ylabel('頻率')plt.title('直方圖')maxfreq=n.max()plt.ylim(ymax=np.ceil(maxfreq/10)*10ifmaxfreq%10elsemaxfreq+10)plt.show()2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境餅圖反映某個(gè)部分占整體的比重。labels=['第1季度','第2季度','第2季度','第2季度']#各部分標(biāo)簽percent=[20,45,20,15]#各部分比例color=['red','yellow','green','blue']#各部分顏色plode=[0,0.05,0,0]#各部分突出值plt.pie(percent,explode=plode,colors=color,labels=labels,labeldistance=1.1,autopct="%1.1f%%",shadow=False)plt.axis("equal")#設(shè)置橫軸和縱軸大小相等,這樣餅才是圓的plt.legend()plt.rcParams['font.sans-serif']=['SimHei']#如果要顯示中文字體,則在此處設(shè)為:SimHeiplt.rcParams['axes.unicode_minus']=False#顯示負(fù)號(hào)plt.show()2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境scikit-learn,也稱(chēng)為sklearn,是針對(duì)Python編程語(yǔ)言的免費(fèi)軟件機(jī)器學(xué)習(xí)庫(kù),于2007年由Google開(kāi)發(fā),是目前使用最為廣泛的機(jī)器學(xué)習(xí)庫(kù)。2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境scikit-learn庫(kù)提供的6個(gè)模塊介紹如下:分類(lèi)(classification):目前Scikit-learn已包含的算法:支持向量機(jī)(SVM)、最近鄰、邏輯回歸、隨機(jī)森林、決策樹(shù)以及多層感知器(MLP)神經(jīng)網(wǎng)絡(luò)等?;貧w(regression):通過(guò)分析相關(guān)屬性特征與目標(biāo)之間的關(guān)系,給出一組連續(xù)的預(yù)測(cè)值。目前Scikit-learn已包含的算法:支持向量回歸(SVR)、Lasso回歸、貝葉斯回歸、隨機(jī)森林回歸等。聚類(lèi)(clustering):自動(dòng)識(shí)別具有相似屬性的對(duì)象,并劃分為一類(lèi),屬于無(wú)監(jiān)督學(xué)習(xí)范疇,一般可用于輔助決策。目前Scikit-Learn包含的算法:k-均值聚類(lèi)、譜聚類(lèi)、均值偏移、層次聚類(lèi)、DBSCAN聚類(lèi)等。數(shù)據(jù)降維(dimensionalityreduction):主成分分析(PCA)、非矩陣分解(NMF)、奇異值分解(SVD)等。模型選擇(modelselection):對(duì)給定參數(shù)和模型的比較、驗(yàn)證和選擇,調(diào)整模型和參數(shù)以提升精度。目前Scikit-learn包括的算法:網(wǎng)格搜索、交叉驗(yàn)證和各種評(píng)估函數(shù)。數(shù)據(jù)預(yù)處理(preprocessing):數(shù)據(jù)的離散化、特征提取、歸一化、二值化。2.1機(jī)器學(xué)習(xí)Python基礎(chǔ)與開(kāi)發(fā)環(huán)境importseabornassnscolors=sns.color_palette("colorblind")plt.figure()foriinrange(len(y_pred)):ify_pred[i]==0:s1=plt.scatter(X_test[i,1],X_test[i,2],marker='o',color=colors[0])elify_pred[i]==1:s2=plt.scatter(X_test[i,1],X_test[i,2],marker='s',color=colors[1])else:s3=plt.scatter(X_test[i,1],X_test[i,2],marker='*',color=colors[2])plt.xlabel("X")plt.ylabel("Y")plt.title("貝葉斯分類(lèi)器")plt.rcParams['font.family']=['sans-serif']plt.rcParams['font.sans-serif']=['SimHei']plt.legend((s1,s2,s3),('0','1','2'),loc='best')plt.show()2.2機(jī)器學(xué)習(xí)基礎(chǔ)張量(Tensor)就是多維數(shù)組(MultidimensionalArray),是深度學(xué)習(xí)的基礎(chǔ)。其作用是為了表達(dá)更高維度的矩陣、向量。張量可分為標(biāo)量、向量、矩陣、3D張量及更高維的張量。2.2機(jī)器學(xué)習(xí)基礎(chǔ)importnumpyasnpx=np.array(5)print('x:',x,'x的維度:',x.ndim)x=np.array([1,2,3,4,5,6])print('x:',x,'x的維度:',x.ndim)x=np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]])print('x:',x,'x的維度:',x.ndim)x=np.array([[[1,2,3,4,5],[6,7,8,9,10]],[[11,12,13,14,15],[16,17,18,19,20]]])print('x:',x,'x的維度:',x.ndim)x:5x的維度:0x:[123456]x的維度:1x:[[12345][678910][1112131415][1617181920]]x的維度:2x:[[[12345][678910]][[1112131415][1617181920]]]x的維度:32.2機(jī)器學(xué)習(xí)基礎(chǔ)所謂梯度,是一個(gè)矢量,表示某一函數(shù)在該點(diǎn)處的方向?qū)?shù)沿著該方向取得最大值,即函數(shù)在該點(diǎn)處沿著該方向(梯度的方向)變化最快,變化率最大。梯度可以理解為函數(shù)的導(dǎo)數(shù),導(dǎo)數(shù)是增長(zhǎng)的方向,所以梯度其實(shí)是增長(zhǎng)的方向,那么,梯度的反方向就是下降的方向。2.2機(jī)器學(xué)習(xí)基礎(chǔ)梯度下降可用數(shù)學(xué)公式去表述,如果是凸函數(shù),表示山的形狀,那么梯度下降公式可以表示為這里的表示當(dāng)前的坐標(biāo)位置,是學(xué)習(xí)因子,表示每次向上走一步的步長(zhǎng),x是更新后的坐標(biāo)位置,就是走一步后的位置。2.2機(jī)器學(xué)習(xí)基礎(chǔ)不同的領(lǐng)域有不同的評(píng)估方法,這里注意介紹一些常見(jiàn)的機(jī)器學(xué)習(xí)評(píng)估方法:召回率(recall/查全率)、精確率(Precission)、F1-score?;煜仃嚕–onfusionMatrix)。對(duì)于二分類(lèi)來(lái)說(shuō),其混淆矩陣為二行二列的,如表2-1所示。(1)TP,即TruePostive,為真正例,樣本的真實(shí)類(lèi)別是正例,且模型預(yù)測(cè)的結(jié)果也是正例。(2)FP,即FalsePositive,為假正例,樣本的真實(shí)類(lèi)別是負(fù)例,但模型預(yù)測(cè)的結(jié)果為正例。(3)FN,即FalseNegative,為假負(fù)例,樣本的真實(shí)類(lèi)別是正例,但模型預(yù)測(cè)的結(jié)果為負(fù)例。(4)TN,即TrueNegative,為真負(fù)例,樣本的真實(shí)類(lèi)別是負(fù)例,且模型預(yù)測(cè)的結(jié)果也是負(fù)例。2.2機(jī)器學(xué)習(xí)基礎(chǔ)精確率是指分類(lèi)正確的正樣本占預(yù)測(cè)為正的樣本個(gè)數(shù)的比例,在信息檢索領(lǐng)域稱(chēng)為查準(zhǔn)率。計(jì)算方法為:召回率是指分類(lèi)正確的正樣本占真正的正樣本個(gè)數(shù)的比例,在信息檢索領(lǐng)域稱(chēng)為查全
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024新教材高中歷史 第六單元 世界殖民體系與亞非拉民族獨(dú)立運(yùn)動(dòng) 第12課 資本主義世界殖民體系的形成教學(xué)實(shí)錄 部編版必修中外歷史綱要下
- 安全生產(chǎn)檢查記錄表(范本)
- 關(guān)于旅游類(lèi)實(shí)習(xí)報(bào)告模板八篇
- 2025屆高三英語(yǔ)一輪復(fù)習(xí)外刊語(yǔ)法填空-澳門(mén)回歸25周年+電影《小小的我》上映+哈爾濱冰雪大世界開(kāi)園
- 關(guān)于人力資源的實(shí)習(xí)報(bào)告
- 2024年海鮮供應(yīng)商獨(dú)家合作協(xié)議
- 關(guān)于個(gè)人民警述職報(bào)告3篇
- 自我鑒定大學(xué)生500字
- 學(xué)生軍訓(xùn)心得體會(huì)合集15篇
- 心理學(xué)心得體會(huì)三篇
- 食材配送投標(biāo)服務(wù)方案
- 醫(yī)療醫(yī)學(xué)醫(yī)生護(hù)士工作PPT模板
- 排污許可證守法承諾書(shū)(2篇)
- ppt模板:創(chuàng)意中國(guó)風(fēng)古風(fēng)水墨山水通用模板課件
- 矩形頂管施工方案28
- 液壓轉(zhuǎn)向器廠總平面布置課程設(shè)計(jì)
- 說(shuō)明性語(yǔ)段的壓縮(課堂PPT)
- 造紙化學(xué)品及其應(yīng)用
- GB_T 13234-2018 用能單位節(jié)能量計(jì)算方法(高清正版)
- 裝配式鋼板筒倉(cāng)安裝技術(shù)經(jīng)驗(yàn)規(guī)程
- 拔除智齒病歷1頁(yè)
評(píng)論
0/150
提交評(píng)論