《Python數(shù)據(jù)分析》課件 項(xiàng)目六 機(jī)器學(xué)習(xí)_第1頁
《Python數(shù)據(jù)分析》課件 項(xiàng)目六 機(jī)器學(xué)習(xí)_第2頁
《Python數(shù)據(jù)分析》課件 項(xiàng)目六 機(jī)器學(xué)習(xí)_第3頁
《Python數(shù)據(jù)分析》課件 項(xiàng)目六 機(jī)器學(xué)習(xí)_第4頁
《Python數(shù)據(jù)分析》課件 項(xiàng)目六 機(jī)器學(xué)習(xí)_第5頁
已閱讀5頁,還剩169頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python數(shù)據(jù)分析

項(xiàng)目六

“1+X”數(shù)據(jù)應(yīng)用開發(fā)與服務(wù)(Python)專項(xiàng)集訓(xùn)

知識(shí)引入在計(jì)算機(jī)領(lǐng)域,人工智能技術(shù)引領(lǐng)了新一次的技術(shù)革命,機(jī)器學(xué)習(xí)方法作為人工智能的入門基礎(chǔ),通過機(jī)器學(xué)習(xí)提高學(xué)生對(duì)人工智能的認(rèn)識(shí),掌握人工智能技術(shù)。通過機(jī)器學(xué)習(xí)的學(xué)習(xí)幫助同學(xué)們理解機(jī)器學(xué)習(xí)的任務(wù)和流程,掌握機(jī)器學(xué)習(xí)中數(shù)據(jù)的預(yù)處理、模型訓(xùn)練、評(píng)估和預(yù)測(cè)的方法。

知識(shí)框架

目錄任務(wù)一Python基礎(chǔ)語法的集訓(xùn)任務(wù)二機(jī)器學(xué)習(xí)基礎(chǔ)任務(wù)三回歸任務(wù)—波士頓房?jī)r(jià)預(yù)測(cè)任務(wù)四分類任務(wù)—鳶尾花分類本任務(wù)主要復(fù)習(xí)

Python基礎(chǔ)語法中的變量與數(shù)據(jù)類型、數(shù)據(jù)運(yùn)算、數(shù)據(jù)存儲(chǔ)、選擇語句、面向過程編程等內(nèi)容。任務(wù)介紹任務(wù)一Python基礎(chǔ)語法的集訓(xùn)變量的優(yōu)勢(shì):變量,即變化的量;如果將變量比做一個(gè)容器,那么它內(nèi)部的內(nèi)容會(huì)隨著放入物品的變化而變化,放入變量中的物品即計(jì)算機(jī)要處理的數(shù)據(jù),因此,變量能夠存放不同類型的數(shù)據(jù),變量所指的變化的量為其中數(shù)據(jù)的變化,數(shù)據(jù)變量中的優(yōu)勢(shì)是:可以讓變量代替數(shù)值進(jìn)行間接運(yùn)算,如果在運(yùn)算的過程發(fā)現(xiàn)起始的數(shù)據(jù)有錯(cuò)誤,就可以在利用變量來修改該數(shù)據(jù),避免了原始數(shù)據(jù)直接參與運(yùn)算如果自身數(shù)據(jù)存在錯(cuò)誤,需要對(duì)該值參與運(yùn)算的全過程中逐一修改出錯(cuò)數(shù)據(jù)的問題,而利用變量直接修改數(shù)據(jù)只需要修改一次即可。1.變量的命名

子任務(wù)1變量與數(shù)據(jù)類型1.變量的命名

子任務(wù)1變量與數(shù)據(jù)類型變量的命名需要同時(shí)滿足以下規(guī)則:(1)不能使用Python語言中的關(guān)鍵字(如:for、while、if等),因?yàn)殛P(guān)鍵字已經(jīng)被系統(tǒng)占用用以實(shí)現(xiàn)指定功能,這些被系統(tǒng)已經(jīng)占用的名字用戶就不能作為變量名;(2)名字當(dāng)中的每個(gè)字符必須是數(shù)字、字母(a~z,A~Z)、下劃線(_)這三種的任一種;(3)名字的首字母不能為數(shù)字;(4)所起的名字盡量做到見名知意。2.數(shù)據(jù)類型

子任務(wù)1變量與數(shù)據(jù)類型Python中數(shù)據(jù)的種類分為:數(shù)值類型和非數(shù)值類型。(1)數(shù)值類型:常用的數(shù)值類型根據(jù)數(shù)據(jù)有沒有小數(shù)點(diǎn)可以將數(shù)據(jù)分成:整數(shù)類型和浮點(diǎn)數(shù)類型;整數(shù)就是沒有小數(shù)點(diǎn)的數(shù)據(jù)其對(duì)應(yīng)的種類用關(guān)鍵字:int表示;浮點(diǎn)數(shù)就是有小數(shù)點(diǎn)的數(shù)據(jù)其對(duì)應(yīng)的種類用關(guān)鍵字:float表示(2)非數(shù)值類型:常用的非數(shù)值類型分為:字符串類型和布爾類型。字符串類型的數(shù)據(jù)是由一對(duì)引號(hào)(單引號(hào)或雙引號(hào)均可)和引號(hào)中的內(nèi)容整體構(gòu)成的數(shù)據(jù),用關(guān)鍵字str來表示字符串的類型;布爾類型是來表達(dá)邏輯判斷中是與否,用關(guān)鍵字Boolean來表示;Boolean類型數(shù)據(jù)的取值只有兩個(gè):True和False,其中,True表示邏輯的真,F(xiàn)alse表示邏輯的假。1.賦值運(yùn)算

子任務(wù)2數(shù)據(jù)運(yùn)算數(shù)學(xué)中進(jìn)行數(shù)值判斷的“=”(等于號(hào))在計(jì)算機(jī)中被用作賦值符;計(jì)算機(jī)中的賦值號(hào)的功能是將賦值號(hào)右側(cè)的值放入左側(cè)的變量中,常用來為變量設(shè)置值。案例如下:a1=2b1=4print(a1)#顯示變量a1和b1中的值a1=a1+b1print(a1)#使用賦值號(hào)右側(cè)表達(dá)式的值,為左側(cè)變量進(jìn)行賦值2.算術(shù)運(yùn)算符

子任務(wù)2數(shù)據(jù)運(yùn)算算術(shù)運(yùn)算符即在數(shù)學(xué)中常用的“加、減、乘、除、取余”等運(yùn)算,基本都是針對(duì)于數(shù)值類型的數(shù)據(jù)。加法的符號(hào)為“+”,減法的符號(hào)為“-”,乘法的符號(hào)“*”,除法的運(yùn)算符“\”,取余數(shù)的符號(hào)%,案例如下:a2=20b2=4print(a2+b2)#加法運(yùn)算print(a2-b2)#減法運(yùn)算print(a2*b2)#乘法運(yùn)算print(a2/b2)#除法運(yùn)算print(a2%b2)#取余法運(yùn)算3.復(fù)合賦值運(yùn)算符

子任務(wù)2數(shù)據(jù)運(yùn)算復(fù)合賦值運(yùn)算符是將算術(shù)運(yùn)算符與賦值運(yùn)算符進(jìn)行結(jié)合形成的一種運(yùn)算符,復(fù)合賦值運(yùn)算符中賦值運(yùn)算符在算術(shù)運(yùn)算符之后,如:+=、-+、*=、\=等復(fù)合賦值運(yùn)算符。案例如下:a3=20b3=4print(a3+=b3)#加法復(fù)合運(yùn)算符print(a3-=b3)#減法復(fù)合運(yùn)算符print(a3*=b3)#乘法復(fù)合運(yùn)算符print(a3/=b3)#除法復(fù)合運(yùn)算符print(a3%=b3)#取余復(fù)合運(yùn)算符print(a3//=b3)#整除復(fù)合運(yùn)算符4.比較運(yùn)算符

子任務(wù)2數(shù)據(jù)運(yùn)算比較運(yùn)算符主要用來判斷兩個(gè)操作數(shù)之間的大小關(guān)系,其返回的結(jié)果只能是True或False。常用的比較運(yùn)算符有“>”、“<”,“==”等。案例如下:a4=20b4=4c4=20print(a4==c4)#比較a4和c4的值是否相等print(a4!=b4)#比較a4和b4的值是否不相等print(a4>b4)#比較a4的值是否大于b4的值print(a4<b4)#比較a4的值是否小于b4的值print(a4>=c4)#比較a4的值是否大于等于c4的值print(a4<=b4)#比較a4的值是否小于等于b4的值5.邏輯運(yùn)算符

子任務(wù)2數(shù)據(jù)運(yùn)算在進(jìn)行“與”、“或”、“非”等邏輯運(yùn)算操作時(shí),需要用到邏輯運(yùn)算符and、or、not。案例如下:a5=10>2b5=10<2c5=0print(a5andb5)#and運(yùn)算print(a5orc5)#or運(yùn)算print(notc5)#not運(yùn)算運(yùn)算符描述andaandb,如果a為真并且b為真,返回True,如果a或b中的任意一個(gè)不為真,返回Falseoraorb,如果a為真或者b為真,返回True,如果a為假并且b為假,返回Falsenotnota,如果a的值為True,則返回False,否則返回True6.運(yùn)算符的優(yōu)先級(jí)

子任務(wù)2數(shù)據(jù)運(yùn)算進(jìn)行運(yùn)算時(shí)有時(shí)會(huì)涉及到多種運(yùn)算符,有括號(hào)的要優(yōu)先計(jì)算結(jié)果,而在多種運(yùn)算符之間進(jìn)行計(jì)算遵循運(yùn)算符的優(yōu)先級(jí)規(guī)則。案例如下:運(yùn)算符描述**指數(shù)~按位翻轉(zhuǎn)*、/、%、//乘、除、取余、取整+、=加法、減法==、!=等于、不等于=、%=、+=、-=復(fù)合賦值運(yùn)算符or、and邏輯運(yùn)算符a6=5%2b6=5%2and5//2c6=3print(a6andb6)d=(a6+2)//c6+2and1print(d)1.列表結(jié)構(gòu)

子任務(wù)3數(shù)據(jù)存儲(chǔ)為了能夠一次存放多個(gè)數(shù)值并操作多個(gè)數(shù)據(jù),Python中提供了列表和字典結(jié)構(gòu)來存儲(chǔ)多個(gè)數(shù)據(jù)。如果存儲(chǔ)的數(shù)據(jù)是按照固定的順序進(jìn)行存儲(chǔ),這種固定的順序通常為線性的如數(shù)字0,1,2,3…,滿足自身遞增的規(guī)律。這樣在進(jìn)行數(shù)據(jù)的存取時(shí)就可以按照值所對(duì)應(yīng)的下標(biāo)對(duì)數(shù)據(jù)進(jìn)行“按位取值”,從而對(duì)得到的數(shù)據(jù)進(jìn)行修改、刪除等操作。列表使用方括號(hào)([])進(jìn)行標(biāo)識(shí),其中元素使用逗號(hào)進(jìn)行分隔,每個(gè)元素都下標(biāo)默認(rèn)下標(biāo)是從0開始順次遞增。案例如下:alist=[32,"b","x","helloworld"]print(alist)注意:列表中的每個(gè)值都有一個(gè)整數(shù)下標(biāo),如元素32對(duì)應(yīng)的下標(biāo)為0;“helloworld”對(duì)應(yīng)的下標(biāo)為3;不同下標(biāo)的值可以相同的值、不同類型的值、或者列表等。1.列表結(jié)構(gòu)

子任務(wù)3數(shù)據(jù)存儲(chǔ)列表中元素?cái)?shù)據(jù)的增、刪、改、查操作:

對(duì)于存在的列表,查詢是其他操作的基礎(chǔ),只有定位到要操作的數(shù)據(jù)才能對(duì)其執(zhí)行后續(xù)操作。列表中元素的查詢遵循“按位取值”的原則,即按照值在列表中存放的位置進(jìn)行取值。案例如下:#創(chuàng)建空的列表變量alistalist=[]

alist.append(32)#添加元素的append方法print(alist)alist.append("b")print(alist)alist.append("helloworld")print(alist)#按位進(jìn)行添加元素的insert方法,alist.insert(2,"x")print(alist)#查詢列表下標(biāo)為3的print(alist[3])#查詢列表下標(biāo)為2的元素,并修改為:“y”alist[2]='y'print(alist)#查詢列表下標(biāo)為3的元素,并刪除其中的元素delalist[3]print(alist)1.列表結(jié)構(gòu)

子任務(wù)3數(shù)據(jù)存儲(chǔ)數(shù)組元素的遍歷:對(duì)列表中的元素進(jìn)行遍歷,即取出列表當(dāng)中的每一個(gè)元素,不能重復(fù)也不能遺漏。第一種方式:直接使用for循環(huán)順次找出其中的每個(gè)值,并輸出forvalueinalist:print(value)第二種方式:間接取值,使用while循環(huán)根據(jù)每個(gè)值的位置取出其中的值,并輸出num=0while(num<len(alist)):print(alist[num])num=num+1注意:len()函數(shù)用來查看序列當(dāng)中元素的個(gè)數(shù)。1.選擇語句

子任務(wù)4選擇語句判斷語句也稱為選擇語句,它的執(zhí)行情況是在當(dāng)程序下一步的執(zhí)行存在多種情況,而程序只能從多種情況中挑選滿足條件的一種情況進(jìn)行執(zhí)行,從而實(shí)現(xiàn)了多選一的方式對(duì)程序進(jìn)行控制。if(判斷條件1):

代碼塊1else:

代碼塊2(1)二選一的情況:語法如下:注意:if后要跟一個(gè)條件1,如果滿足條件執(zhí)行代碼塊1;else后面不跟條件,但是它代表的是條件為:不滿足條件1的所有情況,執(zhí)行代碼塊2。1.選擇語句

子任務(wù)4選擇語句(1)二選一的情況:案例如下:#案例一:判斷字符串存放的是否為“hello”,如果是,輸出:字符串中存放的是‘hello’;#否則,輸出:“不是‘hello’name=“hello”if(name==“hello”):print(“字符串中存放的是‘hello’”)else:print(“不是‘hello’”)#案例二:判斷輸入的數(shù)是否大于50;如果是,輸出:“該數(shù)大于50”;否則,輸出:該數(shù)字不大于50num=80if(num>50):print(“該數(shù)大于50”)else:print(“該數(shù)字不大于50”)1.選擇語句

子任務(wù)4選擇語句if(判斷條件1):

代碼塊1elif(判斷條件2):

代碼塊2elif(判斷條件3):

代碼塊3else:

代碼塊4(2)多選一的情況:語法如下:其中,if后要跟一個(gè)條件1,如果滿足條件執(zhí)行代碼塊1;elif后面跟第二種情況,如果滿足執(zhí)行代碼塊2,如果后續(xù)還有多種情況,每一種對(duì)用elif進(jìn)行引導(dǎo),滿足條件時(shí)執(zhí)行對(duì)應(yīng)的代碼塊,最終,else后面不跟條件,但是它代表的是條件為:上述多種情況都不滿足時(shí)的情況,執(zhí)行代碼塊4。1.選擇語句

子任務(wù)4選擇語句(2)多選一的情況:案例如下:#案例一:將60~100,之間的分?jǐn)?shù)段劃分為四個(gè)等級(jí),(1)當(dāng)輸入成績(jī)小于60時(shí),輸出:不及格;(2)當(dāng)輸入成績(jī)?cè)?0~80時(shí),輸出:良好;(3)當(dāng)輸入成績(jī)?cè)?0~100時(shí),輸出:優(yōu)秀;(4)當(dāng)輸入成績(jī)大于100,輸出:大于100;num=78if(num<60):print(“不及格”)elif(60<=num<80):print(“良好”)elif(80<=num<100):print(“優(yōu)秀”)else:print(“大于100”)#方法二:利用if…else嵌套逐層進(jìn)行分解num=80if(num>=60):if(num>80):if(num>100):print(“大于100”)else:print(“優(yōu)秀”)else:print(“良好”)else:print(“不及格”)1.循環(huán)語句

子任務(wù)5循環(huán)語句

程序不但可以在多種情況中選擇滿足條件的一種情況進(jìn)行多選一執(zhí)行,還可以在滿足一定條件下重復(fù)執(zhí)行相應(yīng)代碼塊。對(duì)于重復(fù)執(zhí)行代碼塊的這種程序控制語句,被稱為循環(huán)語句。Python中常用的循環(huán)語句有兩種:一個(gè)是while循環(huán),另一個(gè)是for循環(huán)。while(判斷條件1):

代碼塊1(1)while循環(huán)的語法注意:while后要跟一個(gè)條件1,如果滿足條件執(zhí)行代碼塊1就執(zhí)行對(duì)應(yīng)的代碼塊1,1.循環(huán)語句

子任務(wù)5循環(huán)語句#案例一:輸出100次helloworld#定義一個(gè)計(jì)數(shù)器counter=0while(counter<100):counter+=1print("helloworld")(1)while循環(huán)的案例#案例二:從1數(shù)到100;counter=0while(counter<100):counter+=1print(counter)1.循環(huán)語句

子任務(wù)5循環(huán)語句for變量in序列:

代碼塊1(2)for循環(huán)的語法注意:for和in是關(guān)鍵字,序列可以為字符串、列表、字典等數(shù)據(jù)結(jié)構(gòu)。1.循環(huán)語句

子任務(wù)5循環(huán)語句#案例一:輸出100次helloworldfornameinrange(0,100):print("helloworld")(2)for循環(huán)的案例#案例二:從1數(shù)到100;fornameinrange(1,101):print(name)注意:for循環(huán)每次是從序列中取出一個(gè)元素,直到取出其中所有元素為止。2.循環(huán)語句中的break與continue關(guān)鍵字的使用

子任務(wù)5循環(huán)語句#案例一:使用循環(huán)語句實(shí)現(xiàn)#輸出:0,1,2,3,7,8,9foriinrange(0,10):ifi>=4andi<=6:continueelse:print(i)(1)continue跳出當(dāng)前本次循(2)break跳出當(dāng)前整個(gè)循環(huán)#案例二:使用循環(huán)語句,從0~10中實(shí)現(xiàn)#輸出:0,1,2,3,4,5,6,7foriinrange(0,11):ifi>7:breakelse:print(i)3.循環(huán)結(jié)構(gòu)的嵌套

子任務(wù)5循環(huán)語句#方法一:for循環(huán)實(shí)現(xiàn)foriinrange(1,6):forjinrange(1,6):print((i,j),end='\t’)

print()案例一:輸出如下圖所示的數(shù)對(duì):#方法二:while循環(huán)實(shí)現(xiàn)i=1while(i<6):j=1while(j<6):print((i,j),end="\t")j+=1;print()i+=1;3.循環(huán)結(jié)構(gòu)的嵌套

子任務(wù)5循環(huán)語句案例二:編寫程序?qū)崿F(xiàn)如下所示的9*9乘法表#方法一:for循環(huán)實(shí)現(xiàn)foriinrange(1,10):forjinrange(1,10):ifi>=j:print(‘{}*{}={}’.format(j,i,j*i),end=‘\t’)print()1.函數(shù)

子任務(wù)6面向過程編程

函數(shù)是對(duì)重復(fù)代碼的代替,他能夠?qū)⒅貜?fù)執(zhí)行的步驟封裝起來,每次使用定義函數(shù)進(jìn)行調(diào)用即可執(zhí)行函數(shù)內(nèi)涵的代碼,從而實(shí)現(xiàn)使用調(diào)用函數(shù)即可等價(jià)執(zhí)行重復(fù)代碼,減少代碼的書寫提高代碼的利用率。Python的函數(shù)根據(jù)有無參數(shù)或返回值可以將函數(shù)分為4種:(1)無參數(shù)無返回值的函數(shù)(2)有參數(shù)無返回值的函數(shù)(3)無參數(shù)有的返回值(4)有參數(shù)有的返回值。

注:Python中的函數(shù)一定要先定義再調(diào)用進(jìn)行使用,同時(shí),定義代碼要在調(diào)用代碼之前。while(判斷條件1):

代碼塊12.無參數(shù)無返回值的函數(shù)

子任務(wù)6面向過程編程對(duì)于不同用戶要使用完全相同的功能,并且功能中包括的實(shí)現(xiàn)步驟較多時(shí),為了避免為每個(gè)用戶都要重寫一遍重復(fù)的實(shí)現(xiàn)步驟,可以將這些重復(fù)的步驟定義函數(shù)進(jìn)行封裝,后續(xù)每次使用直接使用定義好函數(shù)即可使用內(nèi)部封裝的實(shí)現(xiàn)步驟。定義無參數(shù)無返回值的函數(shù),其結(jié)構(gòu)如下:def函數(shù)名():

函數(shù)體

其中,def是關(guān)鍵字用來定義函數(shù)使用,只限于在定義階段使用,定義好了再調(diào)用的時(shí)候則不使用def。每個(gè)函數(shù)都要有具體的名字,函數(shù)名的命名遵循標(biāo)識(shí)符的命名規(guī)則,在定義完的函數(shù)名之后的行末要有冒號(hào)結(jié)尾;在函數(shù)體中是實(shí)現(xiàn)該功能的步驟所對(duì)應(yīng)的代碼實(shí)現(xiàn)。2.無參數(shù)無返回值的函數(shù)—案例

子任務(wù)6面向過程編程#定義查詢導(dǎo)航函數(shù)defmeau():print("----****歡迎致電****----")print("話費(fèi)及積分查詢請(qǐng)按1")print("密碼服務(wù)請(qǐng)按2")print("流量查詢請(qǐng)按3")print("歸屬地查詢請(qǐng)按4")print("----語音提示已結(jié)束-----")#先定義再使用print(meau())print(meau())注:對(duì)于定義好的無參數(shù)無返回值函數(shù),只有在調(diào)用才能將函數(shù)體中的實(shí)現(xiàn)步驟逐一執(zhí)行。而對(duì)于無參數(shù)無返回值的函數(shù)的調(diào)用,直接使用函數(shù)名和圓括號(hào)。3.有參數(shù)無返回值的函數(shù)

子任務(wù)6面向過程編程對(duì)于不同用戶彼此使用的功能類似,功能只有局部存在不同。對(duì)于這種功能可以使用有參數(shù)無返回值的函數(shù)進(jìn)行封裝,用參數(shù)傳入局部要修改的部分,從而實(shí)現(xiàn)為不同用戶提供類似功能的目的。其結(jié)構(gòu)如下:def函數(shù)名(參數(shù)1,參數(shù)2,…,參數(shù)n):

函數(shù)體

其中,def是關(guān)鍵字用來定義函數(shù)使用,只限于在定義階段使用,定義好了再調(diào)用的時(shí)候則不使用def;每個(gè)函數(shù)都要有具體的名字,函數(shù)名的命名遵循標(biāo)識(shí)符的命名規(guī)則;在函數(shù)名的括號(hào)中需要傳入?yún)?shù),此時(shí)的參數(shù)1、參數(shù)2等只起到占位的作用,后續(xù)在調(diào)用的時(shí)候要用實(shí)際使用的參數(shù)來代替,在定義完的函數(shù)名之后的行末要有冒號(hào)結(jié)尾;函數(shù)體整體縮進(jìn)4個(gè)空格,在函數(shù)體中是實(shí)現(xiàn)該功能的步驟所對(duì)應(yīng)的代碼實(shí)現(xiàn)。3.有參數(shù)無返回值的函數(shù)—案例

子任務(wù)6面向過程編程#定義查詢導(dǎo)航函數(shù)defmeau(name):#加入實(shí)際傳入的名字print("----****歡迎{}致電****----".format(name))

print("話費(fèi)及積分查詢請(qǐng)按1")print("密碼服務(wù)請(qǐng)按2")print("流量查詢請(qǐng)按3")print("歸屬地查詢請(qǐng)按4")print("----語音提示已結(jié)束-----")meau("劉陽")meau("高雅")對(duì)于定義好的有參數(shù)無返回值函數(shù),可以通過動(dòng)態(tài)調(diào)整參數(shù),實(shí)現(xiàn)對(duì)實(shí)現(xiàn)功能進(jìn)行局部調(diào)整,最終,對(duì)于不同用戶而言的功能是類似的。4.無參數(shù)有返回值的函數(shù)

子任務(wù)6面向過程編程如果執(zhí)行某個(gè)函數(shù)要求實(shí)現(xiàn)的功能是要返回一個(gè)固定的內(nèi)容,此時(shí),需要用到無參有返回值函數(shù)。定義無參數(shù)有返回值的函數(shù),其結(jié)構(gòu)如下:def函數(shù)名():

函數(shù)體return其中,def是關(guān)鍵字用來定義函數(shù)使用,只限于在定義階段使用,定義好了再調(diào)用的時(shí)候則不使用def。每個(gè)函數(shù)都要有具體的名字,函數(shù)名的命名遵循標(biāo)識(shí)符的命名規(guī)則,在定義完的函數(shù)名之后的行末要有冒號(hào)結(jié)尾;在函數(shù)體中是實(shí)現(xiàn)該功能的步驟所對(duì)應(yīng)的代碼實(shí)現(xiàn),在函數(shù)體的最后一行,需要返回的內(nèi)容需要加在關(guān)鍵字return后面,return關(guān)鍵字引導(dǎo)的返回值的位置是固定的,只能在函數(shù)體的最后一行,表示函數(shù)體的結(jié)束。

子任務(wù)6面向過程編程#定義查詢導(dǎo)航函數(shù)defmeau():print("----****歡迎致電****----")print("話費(fèi)及積分查詢請(qǐng)按1")print("密碼服務(wù)請(qǐng)按2")print("流量查詢請(qǐng)按3")print("歸屬地查詢請(qǐng)按4")print("----語音提示已結(jié)束-----")return"helloworld"print(meau())print()定義的函數(shù)帶有return的返回值語句,在調(diào)用該函數(shù)時(shí)不但執(zhí)行定義函數(shù)中函數(shù)體的每一個(gè)實(shí)現(xiàn)步驟,而且,當(dāng)執(zhí)行到最后一行的return語句時(shí),會(huì)將return之后的返回值內(nèi)容返回到調(diào)用的整體上,如上述案例中調(diào)用函數(shù):meau()等價(jià)于字符串“helloworld”,最后將“helloworld”通過輸出語句輸出出來。4.無參數(shù)有返回值的函數(shù)—案例5.有參數(shù)有返回值的函數(shù)

子任務(wù)6面向過程編程對(duì)于不同用戶彼此使用的功能類似,功能只有局部存在不同,對(duì)于不同用戶執(zhí)行的結(jié)果會(huì)都要返回一個(gè)固定的內(nèi)容,此時(shí),需要用到有參有返回值函數(shù)。定義無參數(shù)有返回值的函數(shù),其結(jié)構(gòu)如下:def函數(shù)名(參數(shù)1,參數(shù)2,…,參數(shù)n):

函數(shù)體 return表達(dá)式在函數(shù)名的括號(hào)中需要傳入?yún)?shù),此時(shí)的參數(shù)1、參數(shù)2等只起到占位的作用,后續(xù)在調(diào)用的時(shí)候要用實(shí)際使用的參數(shù)來代替,在定義完的函數(shù)名之后的行末要有冒號(hào)結(jié)尾;函數(shù)體整體縮進(jìn)4個(gè)空格,在函數(shù)體中是實(shí)現(xiàn)該功能的步驟所對(duì)應(yīng)的代碼實(shí)現(xiàn)。在函數(shù)體的最后一行,需要返回的內(nèi)容需要加在關(guān)鍵字return后面,return關(guān)鍵字引導(dǎo)的返回值的位置是固定的,只能在函數(shù)體的最后一行,表示函數(shù)體的結(jié)束。

子任務(wù)6面向過程編程defmeau(name):print("----****歡迎{}致電****----".format(name))print("話費(fèi)及積分查詢請(qǐng)按1")print("密碼服務(wù)請(qǐng)按2")print("流量查詢請(qǐng)按3")print("歸屬地查詢請(qǐng)按4")print("----語音提示已結(jié)束-----")return"{}的服務(wù)已結(jié)束".format(name)#調(diào)用函數(shù)print(meau("劉陽"))print(meau("高雅"))對(duì)于有參數(shù)有返回值類型的函數(shù),不但能夠調(diào)整整體功能的局部,而且能夠及時(shí)根據(jù)數(shù)據(jù)處理的結(jié)果調(diào)整返回值的狀態(tài)進(jìn)行因人而異的輸出,實(shí)現(xiàn)動(dòng)態(tài)調(diào)整輸出結(jié)果。5.有參數(shù)有返回值的函數(shù)—案例

目錄任務(wù)一Python基礎(chǔ)語法的集訓(xùn)任務(wù)二機(jī)器學(xué)習(xí)基礎(chǔ)任務(wù)三回歸任務(wù)—波士頓房?jī)r(jià)預(yù)測(cè)任務(wù)四分類任務(wù)—鳶尾花分類在機(jī)器學(xué)習(xí)中,學(xué)習(xí)任務(wù)分為有監(jiān)督和無監(jiān)督學(xué)習(xí)。有監(jiān)督學(xué)習(xí)也被稱為“有老師的學(xué)習(xí)”,常見的有監(jiān)督學(xué)習(xí)有:分類任務(wù)、回歸任務(wù);無監(jiān)督學(xué)習(xí)也稱為“沒有老師的學(xué)習(xí)”,常見的無監(jiān)督學(xué)習(xí)有聚類任務(wù)。有監(jiān)督學(xué)習(xí)在學(xué)習(xí)的過程要有明確的標(biāo)簽,而無監(jiān)督則沒有。任務(wù)介紹任務(wù)二機(jī)器學(xué)習(xí)基礎(chǔ)

分類任務(wù)是有監(jiān)督學(xué)習(xí)中的一種,在分類任務(wù)中監(jiān)督學(xué)習(xí)的標(biāo)簽為數(shù)據(jù)自身的種類,數(shù)據(jù)的類別數(shù)多于一種,這些種類是離散可數(shù)的,通常用整數(shù)表示。例如,在貓狗分類任務(wù)中,如果是一張圖片是貓用數(shù)字0標(biāo)記,如果是狗就用數(shù)字1標(biāo)記。在訓(xùn)練過程中,貓的訓(xùn)練數(shù)據(jù)是貓的圖片,貓的訓(xùn)練標(biāo)簽是數(shù)字0;狗的訓(xùn)練數(shù)據(jù)是狗的圖片,狗的訓(xùn)練標(biāo)簽是數(shù)字1;在整個(gè)訓(xùn)練過程中訓(xùn)練數(shù)據(jù)和訓(xùn)練標(biāo)簽是已知的,使用訓(xùn)練集訓(xùn)練分類器,分類器會(huì)將圖像數(shù)據(jù)與類別標(biāo)簽建立映射關(guān)系;當(dāng)輸入貓的圖片時(shí),訓(xùn)練好的分類器就能預(yù)測(cè)其為種類0;輸入狗的圖片時(shí),訓(xùn)練好的分類器就能預(yù)測(cè)其為種類1,從而實(shí)現(xiàn)分類。

分類模型的目標(biāo)是使訓(xùn)練數(shù)據(jù)集中每個(gè)數(shù)據(jù)的種類盡可能多得預(yù)測(cè)為真實(shí)的種類,為了描述分類模型接近目標(biāo)程度,常用交叉熵?fù)p失函數(shù)作為分類模型的目標(biāo)。1、分類任務(wù)

子任務(wù)1:機(jī)器學(xué)習(xí)的主要任務(wù)

判別式模型能反映訓(xùn)練數(shù)據(jù)本身的特性,它尋找不同類別間盡可能犯錯(cuò)最少的位置作為決策邊界,反映不同類數(shù)據(jù)之間的差異,其預(yù)測(cè)的準(zhǔn)確度更高。判斷式模型具有以下特點(diǎn):(1)對(duì)條件概率建模,學(xué)習(xí)不同類別之間的最優(yōu)邊界;(2)捕捉不同類別特征的差異信息;(3)學(xué)習(xí)成本較低,需要的計(jì)算資源較少(4)訓(xùn)練時(shí)樣本數(shù)量較少時(shí)也能獲得較好的學(xué)習(xí)效果(5)對(duì)對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè)時(shí)擁有較好性能。判斷式模型包括:邏輯回歸模型、支持向量機(jī)SVC模型、線性判別分析模型等;2、判別式模型

子任務(wù)1:機(jī)器學(xué)習(xí)的主要任務(wù)邏輯回歸模型是分類判斷式模型中的一種,雖然模型名稱中有“回歸”字樣,但邏輯回歸模型是一種分類模型。同時(shí),邏輯回歸模型也是神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。邏輯回歸模型的表達(dá)式為:f(x)=g(w1x1+w2x2…+wpxp+b);其中,x1,x2,…,xp為輸入的特征列,p為特征列的列數(shù)(特征的個(gè)數(shù)),w1,w2,…,wp,b為模型中待求解的參數(shù);當(dāng)只有單個(gè)特征時(shí),線性回歸模型判別式g(x)函數(shù)為sigmod函數(shù),其表達(dá)是為:g(x)=1/(1+ew1x1+b),函數(shù)的圖像如下:2、判別式模型

子任務(wù)1:機(jī)器學(xué)習(xí)的主要任務(wù)

生成式模型會(huì)對(duì)x和y的聯(lián)合分布p(x,y)建模,通過貝葉斯公式來求得p(yi|x),選取使得p(yi|x)最大的yi作為數(shù)據(jù)的標(biāo)簽,可以從統(tǒng)計(jì)的角度表示分布的情況,能夠反映同類數(shù)據(jù)本身的相似度,而不是劃分不同類的決策邊界。生成式模型的收斂速度更快,當(dāng)樣本容量增加時(shí),學(xué)習(xí)到的模型可以更快地收斂到真實(shí)模型。生成式模型具有以下特點(diǎn):(1)對(duì)聯(lián)合概率建??梢詫W(xué)習(xí)到所有分類數(shù)據(jù)的分布能夠更好的反應(yīng)數(shù)據(jù)本身特性(2)學(xué)習(xí)成本較高,需要更多的計(jì)算資源,需要的樣本數(shù)更多,樣本較少時(shí)學(xué)習(xí)效果較差(3)當(dāng)存在隱變量時(shí),依舊可以用生成式模型,而判別式模型就不能使用了;(4)推斷時(shí)性能較差,一定條件下能轉(zhuǎn)換成判別式。生成式模型包括:樸素貝葉斯模型、隱藏馬爾科夫模型、高斯混合模型等。判別式模型和生成式模型都是使后驗(yàn)概率最大化,不同點(diǎn)在于:判別式是直接對(duì)后驗(yàn)概率建模;而生成式模型通過貝葉斯定理使問題轉(zhuǎn)化為求聯(lián)合概率。3、生成式模型

子任務(wù)1:機(jī)器學(xué)習(xí)的主要任務(wù)3、生成式模型

子任務(wù)1:機(jī)器學(xué)習(xí)的主要任務(wù)樸素貝葉斯模型

:對(duì)于一個(gè)分類問題,給定樣本特征x,樣本屬于類別y的概率,貝葉斯的計(jì)算公式如下:在以上公式中,假設(shè)樣本特征x的維度為N,c代表y可能分類,其維度為c1,c2,…,ck;若提供一個(gè)x向量,計(jì)算x向量所對(duì)應(yīng)的y是類別k的計(jì)算公式:回歸任務(wù)是有監(jiān)督學(xué)習(xí)中的一種,在回歸任務(wù)中監(jiān)督學(xué)習(xí)的標(biāo)簽為一個(gè)數(shù)據(jù)值,并且這個(gè)數(shù)是連續(xù)的數(shù)值通常用浮點(diǎn)數(shù)表示。例如,房?jī)r(jià)預(yù)測(cè)中影響房?jī)r(jià)的因素有地理位置、房屋面積,此時(shí),學(xué)習(xí)的標(biāo)簽為某個(gè)位置、某個(gè)面積對(duì)應(yīng)的房屋單價(jià);在訓(xùn)練的過程中,每一條數(shù)據(jù)中某個(gè)位置、某個(gè)面積及其對(duì)應(yīng)的房屋單價(jià)都是已知的數(shù)據(jù),將這些待訓(xùn)練的數(shù)據(jù)輸入回歸模型中進(jìn)行訓(xùn)練,建立位置、面積與對(duì)應(yīng)單價(jià)之間的映射關(guān)系;當(dāng)某個(gè)未知的位置和面積輸入到訓(xùn)練好的回歸模型進(jìn)行計(jì)算,輸出相應(yīng)的房屋單價(jià),從而完成回歸任務(wù)?;貧w模型的目標(biāo)是使樣本中所有點(diǎn)的預(yù)測(cè)值和真實(shí)值之間的距離總和最小。常用的回歸模型有線性回歸模型:KNN回歸模型、SVR回歸模型、LinearRegression回歸模型等。5、回歸任務(wù)

子任務(wù)1:機(jī)器學(xué)習(xí)的主要任務(wù)(1)相同點(diǎn):分類和回歸任務(wù)中,訓(xùn)練得到的模型函數(shù)通常為一個(gè)超平面。(2)不同點(diǎn):在模型的訓(xùn)練過程中,對(duì)于在分類問題,不同類型的數(shù)據(jù)點(diǎn)要盡可能多得分布在分類模型超平面的兩側(cè),而在回歸問題中,數(shù)據(jù)點(diǎn)盡可能多得落在回歸模型超平面上。6、分類與回歸模型的區(qū)別于聯(lián)系

子任務(wù)1:機(jī)器學(xué)習(xí)的主要任務(wù)在獲取的原始數(shù)據(jù)中存在“臟數(shù)據(jù)”,為此,需要對(duì)數(shù)據(jù)進(jìn)行缺失、重復(fù)、異常等方面的檢測(cè)與處理,對(duì)處理后的干凈數(shù)據(jù)結(jié)合實(shí)際情況進(jìn)行相關(guān)性分析、歸一化等操作,從而為后續(xù)模型的訓(xùn)練做準(zhǔn)備。titanic.csv(泰坦尼克號(hào))數(shù)據(jù)集常被用來驗(yàn)證分類模型的性能,通過pandas庫讀取數(shù)據(jù)并使用head()方法來查看該數(shù)據(jù)集的前5行數(shù)據(jù),1、數(shù)據(jù)的讀取

子任務(wù)2:數(shù)據(jù)集的預(yù)處理該數(shù)據(jù)集中英文列名的含義1、數(shù)據(jù)的讀取

子任務(wù)2:數(shù)據(jù)集的預(yù)處理列名列名的含義備注:該列的數(shù)據(jù)的取值PassengerId乘客的身份證號(hào)

Survived是否被獲救0表示否,1表示是Pclass客艙等級(jí)1表示頭等艙,2表示二等艙,3表示三等艙Name乘客姓名

Sex性別Female女性,male男性Age年齡

SibSp兄弟姐妹數(shù)或配偶數(shù)在船上的數(shù)量Parch雙親或子女在船上的數(shù)量Ticket船票編號(hào)

Fare船票價(jià)格

Cabin客艙號(hào)

Embarked登船港口C為Cherbourg(瑟堡),Q為Queenstown(皇后鎮(zhèn)),S為Southampton(南安普敦)其中,PassengerID、Ticket、Cabin是對(duì)最終該乘客是否獲救影響較小,因此,將上述這幾列進(jìn)行舍棄。1、數(shù)據(jù)的讀取

子任務(wù)2:數(shù)據(jù)集的預(yù)處理使用drop()方法將要?jiǎng)h除的列名以列的形式進(jìn)行傳入,設(shè)置axis=1表示按照列的方向去查找要?jiǎng)h除的列名,設(shè)置參數(shù)inplace=True表示產(chǎn)生的新數(shù)據(jù)對(duì)原數(shù)據(jù)進(jìn)行覆蓋,最后,使用head()方法檢查去除后的前5行數(shù)據(jù)。(1)檢測(cè)缺失值:通過info()方法來查看每一列的數(shù)據(jù)的缺失情況。2、缺失值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理從輸出結(jié)果中可以看出,當(dāng)前數(shù)據(jù)有0~890行一共891行數(shù)據(jù),其中,“Age”、“Embarked”列的行數(shù)不足891行,所以,這幾列數(shù)據(jù)存在缺失。(2)缺失值的填充:確定了缺失列后,使用fillna()對(duì)缺失值進(jìn)行填充操作。首先對(duì)“Age”列中缺失的數(shù)據(jù)進(jìn)行填充。“Age”列中數(shù)據(jù)為浮點(diǎn)數(shù)類型,可以取其統(tǒng)計(jì)特征中的平均值或中位數(shù)進(jìn)行填充。在代碼中使用data[‘Age’]列取出“Age”所在列,然后調(diào)用fillna()方法傳入“Age”列的平均值data[‘Age’].mean(),設(shè)置參數(shù)inplace=True實(shí)現(xiàn)將產(chǎn)生的新數(shù)據(jù)對(duì)原數(shù)據(jù)進(jìn)行覆蓋。2、缺失值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理對(duì)“Embarked”列中缺失數(shù)據(jù)進(jìn)行補(bǔ)充,因?yàn)椤癊mbarked”列中數(shù)據(jù)為字符串類型,可以采用出現(xiàn)頻次最高的值為缺失位置進(jìn)行補(bǔ)充。圖6.2-6所示,首先,對(duì)于列數(shù)據(jù)使用統(tǒng)計(jì)詞頻的方法value_counts對(duì)該列數(shù)據(jù)進(jìn)行統(tǒng)計(jì),從結(jié)果中選擇詞頻最高的“S”作為填充值。2、缺失值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理然后,使用fillna()函數(shù)對(duì)“Embarked”列中的缺失數(shù)據(jù)進(jìn)行填充,設(shè)置參數(shù)inplace=True實(shí)現(xiàn)將產(chǎn)生的新數(shù)據(jù)對(duì)原數(shù)據(jù)進(jìn)行覆蓋。經(jīng)過處理通過info()函數(shù)顯示每列數(shù)據(jù)的摘要信息,輸出顯示所有列均為891行,表明缺失數(shù)據(jù)的填充已完成。2、缺失值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理(1)檢測(cè)重復(fù)值:通過duplicated()方法來查看當(dāng)前行數(shù)據(jù)與之前的每一行數(shù)據(jù)是否有重復(fù),使用sum()函數(shù)統(tǒng)計(jì)結(jié)果中有重復(fù)行的總數(shù)。3、重復(fù)值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理(2)重復(fù)值的處理:對(duì)于重復(fù)值的處理方式通常是只保留其第一次出現(xiàn)的位置或最后一次出現(xiàn)的位置,如圖6.2-9所示,使用drop_duplicates()進(jìn)行刪除重復(fù)值,函數(shù)中參數(shù)keep有三個(gè)可選參數(shù),分別是“first”、“l(fā)ast”、“False”,默認(rèn)為“first”,表示只保留第一次出現(xiàn)的重復(fù)項(xiàng),“l(fā)ast”表示只保留最后一次出現(xiàn)的重復(fù)項(xiàng),“False”則表示重復(fù)值一個(gè)都不保留,刪除所有重復(fù)項(xiàng)。本數(shù)據(jù)集重復(fù)的行數(shù)據(jù)為0,因此,不需要做重復(fù)值處理。3、重復(fù)值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理對(duì)于數(shù)值類數(shù)據(jù),可以通過查看離群點(diǎn)的方式來進(jìn)行判斷。具體思路如下:將如圖6.2-10所示的原始數(shù)據(jù)按照從小到大的順序進(jìn)行排列,并形成的位置分為四份,分界點(diǎn)分別為位置3、5、7(如圖6.2-11所示);位置3對(duì)應(yīng)的值26記作第一個(gè)四分位數(shù)Q1,位置5對(duì)應(yīng)的值45記作第二個(gè)四分位數(shù)Q2,即為中位數(shù);位置7對(duì)應(yīng)的值57記作第三個(gè)四分位數(shù)Q3;規(guī)定第三個(gè)四分位數(shù)和第一個(gè)四分位數(shù)的差值記作四分位差I(lǐng)QR,異常值為低于(Q1-1.5IQR)或高于(Q3+1.5IQR)的值。4、異常值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理首先,根據(jù)上述異常點(diǎn)的定義,如圖6.2-12所示設(shè)計(jì)函數(shù)process_unusual()返回異常值對(duì)應(yīng)的行號(hào),調(diào)用該函數(shù)判斷數(shù)值類型“SibSp”列內(nèi)是否存在異常值,并統(tǒng)計(jì)異常值的數(shù)量。4、異常值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理對(duì)檢測(cè)到的異常值可以用平均值、中位數(shù)進(jìn)行修改;或者直接刪除異常值對(duì)應(yīng)的行。4、異常值的處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理

使用中位數(shù)對(duì)“SibSp”列中的異常數(shù)據(jù)進(jìn)行修改。如第1行代碼所示,在自定義函數(shù)process_unnusal中傳入“SibSp”數(shù)據(jù)列,從而返回滿足條件的行號(hào)存放在變量hang中。在第2行代碼中使用data[hang]['SibSp']從而根據(jù)行號(hào)找出“SibSp”列中異常數(shù)據(jù)所在的位置,并通過data['SibSp'].median()將“SibSp”列中的中位數(shù)來對(duì)修改異常數(shù)據(jù)。(注:查找行、列數(shù)據(jù)還可以采用loc[]和iloc[]方式。)(1)自然數(shù)編碼:自然數(shù)編碼根據(jù)該列數(shù)據(jù)的種類數(shù)N,分別為每一類指定從0至N-1的一個(gè)數(shù)字。從而將該列中的非數(shù)值型數(shù)據(jù)進(jìn)行數(shù)值化轉(zhuǎn)換。以“Embarked”列中的數(shù)據(jù)為例:5、特征編碼

子任務(wù)2:數(shù)據(jù)集的預(yù)處理首先,讀取data[‘Embarked’]列數(shù)據(jù)使用unique()方法查看該列數(shù)據(jù)值的種類,從輸出結(jié)果中可以看出有三類分別為:“S”、“C”、“Q”。接下來,將讀出的該列數(shù)據(jù)傳入pandas中的Categrical()中,調(diào)用codes屬性來對(duì)“S”、“C”、“Q”這三類數(shù)據(jù)進(jìn)行編碼,即“S”對(duì)應(yīng)0,“C”對(duì)應(yīng)1,“Q”對(duì)應(yīng)2,生成一列新數(shù)據(jù)x,最后,將該列重新編碼的列數(shù)據(jù)x對(duì)原來列數(shù)據(jù)使用賦值語句進(jìn)行覆蓋,從而完成對(duì)“Embarked”列數(shù)據(jù)進(jìn)行自然數(shù)編碼。自然數(shù)編碼還可以使用sklearn庫中的方法,如:sklearn.preprocessing.LabelEncoder和sklearn.preprocessing.OrdinalEncoder等。5、特征編碼

子任務(wù)2:數(shù)據(jù)集的預(yù)處理(2)獨(dú)熱編碼:獨(dú)熱編碼根據(jù)該列數(shù)據(jù)的種類數(shù)N,每一類都為一個(gè)長(zhǎng)度為N的向量;在形成N維向量時(shí),第幾類對(duì)應(yīng)著向量中第幾個(gè)位置上的值為1,其他位置上的值均為0。例如,使用獨(dú)熱編碼的方式對(duì)“軍人”、“團(tuán)員”、“學(xué)生”進(jìn)行編碼,其中,“軍人”是第1類,“團(tuán)員”是第2類,“學(xué)生”是第3類。在形成的“團(tuán)員”編碼中第2個(gè)位置上的數(shù)字為1,其他位置上的數(shù)字為0,因此,團(tuán)員的獨(dú)熱編碼為[0,1,0],同理,軍人的獨(dú)熱編碼為[1,0,0],學(xué)生的獨(dú)熱編碼為[0,0,1]。使用獨(dú)熱編碼的方式有利于后續(xù)模型進(jìn)行相似度的計(jì)算。5、特征編碼

子任務(wù)2:數(shù)據(jù)集的預(yù)處理在Pandas中調(diào)用get_dummies()方法,將要編碼的“Embarked”列數(shù)據(jù)傳入函數(shù)中,即可對(duì)該列數(shù)據(jù)中的每一類進(jìn)行獨(dú)熱編碼,其中,“C”類對(duì)應(yīng)的編碼為[1,0,0],“Q”對(duì)應(yīng)的編碼為[0,1,0],“S”對(duì)應(yīng)的編碼為[0,0,1]。獨(dú)熱編碼還可以使用sklearn庫中的方法,如:sklearn.preprocessing.OneHotEncoder。5、特征編碼

子任務(wù)2:數(shù)據(jù)集的預(yù)處理為了避免模型在訓(xùn)練過程中對(duì)某一列數(shù)據(jù)值較大的值過于依賴,從而保證每列數(shù)據(jù)都能保持在同一個(gè)數(shù)量級(jí)上,需要將處理后的特征列數(shù)據(jù)進(jìn)行歸一化處理。使每一個(gè)特征列中的值均在0~1之間。以“Age”列為例:6、數(shù)據(jù)的歸一化處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理6、數(shù)據(jù)的歸一化處理

子任務(wù)2:數(shù)據(jù)集的預(yù)處理用“Age”列中的最大值減去最小值求出區(qū)間的寬度,然后,用“Age”列中的每個(gè)數(shù)都減去最小值計(jì)算出當(dāng)前值的實(shí)際寬度,最后,用實(shí)際寬度除以區(qū)間的寬度即求出實(shí)際寬度的百分比,從而將“Age”中的每個(gè)值映射到了0~1的區(qū)間內(nèi),并用新生成的“age”中的數(shù)據(jù)對(duì)原“Age”列中的數(shù)據(jù)進(jìn)行修改。

上述的計(jì)算方法也稱為最大最小歸一化處理,在sklearn庫中可以調(diào)用sklearn.preprocessing.MinMaxScaler函數(shù)進(jìn)行實(shí)現(xiàn)將該列數(shù)據(jù)約束到0~1,如果進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)歸一化處理,可以使用sklearn.preprocessing.StandardScaler函數(shù)。7、特征列的選擇

子任務(wù)2:數(shù)據(jù)集的預(yù)處理當(dāng)前數(shù)據(jù)經(jīng)過了最初根據(jù)經(jīng)驗(yàn)刪除無關(guān)列、填充缺失值、刪除重復(fù)值、修改異常值,最后對(duì)保留數(shù)據(jù)進(jìn)行歸一化處理,最后,要對(duì)保留列數(shù)據(jù)進(jìn)行相關(guān)性處理,如果,相關(guān)性高說明這兩列數(shù)據(jù)彼此可以替代保留其中一列即可,從而減少對(duì)計(jì)算資源的消耗提高模型的穩(wěn)定性。7、特征列的選擇

子任務(wù)2:數(shù)據(jù)集的預(yù)處理對(duì)處理后的數(shù)據(jù)列使用data.corr()方法即可查看整個(gè)表中,不同列之間的相關(guān)性,斜對(duì)角線上的列數(shù)據(jù)自己和自己的相關(guān)性,因?yàn)閿?shù)據(jù)完全重復(fù)因此相關(guān)系數(shù)為1,為了便于找出相關(guān)性較高的不同列,可以使用seaborn庫中的heatmap()來對(duì)相關(guān)性的表格采用熱力圖的方式進(jìn)行展示,其中“Pclass”和“Fare”的相關(guān)性也較高,即船艙等級(jí)越高和船票價(jià)格越貴,因此,可以根據(jù)實(shí)際情況可以選擇其中一列進(jìn)行保留;“Parch”和“SibSp”列的相關(guān)性也較高,保留其中一列即可。7、特征列的選擇

子任務(wù)2:數(shù)據(jù)集的預(yù)處理如果經(jīng)過處理后保留的數(shù)據(jù)列仍然比較多此時(shí),PCA、LDA算法進(jìn)行實(shí)現(xiàn)降維;也可以使用過濾法(Filter)進(jìn)行特征選擇,通過計(jì)算每個(gè)特征與結(jié)果之間的相關(guān)性,選擇相關(guān)性較大的一批特征。1、數(shù)據(jù)集的劃分

子任務(wù)3:模型的設(shè)置經(jīng)過對(duì)多列數(shù)據(jù)進(jìn)行處理,最終,保留下來的數(shù)據(jù)列作為最終的特征列,將預(yù)測(cè)數(shù)據(jù)列“Survived”位置調(diào)整到整個(gè)表格的最后一列。接下來,需要將對(duì)處理后的891行9列數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集,按照行的方向進(jìn)行切分,用代碼對(duì)數(shù)據(jù)進(jìn)行切分的過程如下:1、數(shù)據(jù)集的劃分

子任務(wù)3:模型的設(shè)置假設(shè)選擇分割點(diǎn)為行號(hào)為791行,行號(hào)為791~890的100行數(shù)據(jù)作為測(cè)試集test,行號(hào)0~790的791行數(shù)據(jù)作為訓(xùn)練集train。使用代碼獲取訓(xùn)練集train和測(cè)試集test過程如下。1、數(shù)據(jù)集的劃分

子任務(wù)3:模型的設(shè)置在訓(xùn)練集train中“Survived”列(最后1列)作為訓(xùn)練標(biāo)簽,訓(xùn)練集中的前8列構(gòu)成訓(xùn)練數(shù)據(jù);在測(cè)試集test中“Survived”列(最后1列)作為測(cè)試標(biāo)簽,測(cè)試集中的前8列構(gòu)成測(cè)試數(shù)據(jù)。2、分類任務(wù)模型

子任務(wù)3:模型的設(shè)置(1)K近鄰分類模型:KNN(K-NearestNeighbor)法也稱K最鄰近法算法,解決回歸問題的模型為KNeighborsClassifier,它是一種采用投票機(jī)制的算法。該算法的思想如下:給定的帶有標(biāo)記的訓(xùn)練集,當(dāng)有未知的數(shù)據(jù)x需要預(yù)測(cè)其對(duì)應(yīng)的標(biāo)簽時(shí),首先,需要計(jì)算預(yù)測(cè)數(shù)據(jù)x與訓(xùn)練集中每個(gè)數(shù)據(jù)的距離選擇其中距離最小的前K個(gè)訓(xùn)練數(shù)據(jù),根據(jù)前K個(gè)樣本對(duì)應(yīng)的標(biāo)簽出現(xiàn)次數(shù)最多的標(biāo)簽作為待測(cè)樣本x的標(biāo)簽,從而實(shí)現(xiàn)為未知數(shù)據(jù)分類的目的。KNeighborsClassifier模型在sklearn庫中已經(jīng)被實(shí)現(xiàn),使用代碼導(dǎo)出如下。2、分類任務(wù)模型

子任務(wù)3:模型的設(shè)置實(shí)例化KNeighborsClassifier對(duì)象k1,通過get_params()方法查看其中的參數(shù)的默認(rèn)值,其中常用的參數(shù)及作用如下:①n_neighbors:k-NN算法中k的值,默認(rèn)值為5,作用:kneighbors查詢距離最小的前K個(gè)訓(xùn)練數(shù)據(jù);②weights:可選參數(shù),參數(shù)值可以是uniform、distance,默認(rèn)=‘uniform’,也可以是用戶自己定義的函數(shù)。uniform是所有的鄰近點(diǎn)的權(quán)重都是相等的。distance是不均等的權(quán)重,距離近的點(diǎn)比距離遠(yuǎn)的點(diǎn)的影響大。用戶自定義的函數(shù),接收距離的數(shù)組,返回一組維數(shù)相同的權(quán)重。③leaf_size:默認(rèn)是30,這個(gè)是構(gòu)造的kd樹和ball樹的大小。這個(gè)值的設(shè)置會(huì)影響樹構(gòu)建的速度和搜索速度,同樣也影響著存儲(chǔ)樹所需的內(nèi)存大小。需要根據(jù)問題的性質(zhì)選擇最優(yōu)的大小。④n_jobs:并行處理設(shè)置默認(rèn)為1表示搜索臨近點(diǎn)并行工作數(shù)。如果為-1,那么CPU的所有核都用于并行工作2、分類任務(wù)模型

子任務(wù)3:模型的設(shè)置(2)SVM分類器:支持向量機(jī)(SupportVectorMachine,SVM)解決回歸問題的模型為SVC模型,該模型為特征空間上的間隔最大的線性分類器,其學(xué)習(xí)策略便是間隔最大化形成一個(gè)求解凸二次規(guī)劃的問題;通過等價(jià)轉(zhuǎn)化是該問題成為正則化的合頁損失函數(shù)的最小化問題,找出分類的決策邊界。因此,SVC分類器是判別式模型中的一種。SVC分類器在處理數(shù)據(jù)時(shí),在低維空間內(nèi)無法完成分類時(shí)會(huì)通過核函數(shù)將數(shù)據(jù)映射到高維空間使數(shù)據(jù)變?yōu)榫€性可分的。SVC分類器在sklearn庫中已經(jīng)被實(shí)現(xiàn),使用代碼導(dǎo)出SVC分類器的過程如下:2、分類任務(wù)模型

子任務(wù)3:模型的設(shè)置實(shí)例化SVC分類器對(duì)象s1,通過get_params()方法查看其中的參數(shù)的默認(rèn)值,其中常用的參數(shù)及作用如下:①C:懲罰參數(shù),默認(rèn)值為1.0;C值越大即對(duì)分類的懲罰越大,SVC分類器在訓(xùn)練數(shù)據(jù)上分類的準(zhǔn)確率會(huì)提升,但是容易導(dǎo)致分類器過度學(xué)習(xí)訓(xùn)練集中已知的數(shù)據(jù),對(duì)未知數(shù)據(jù)預(yù)測(cè)能力較差從而使得SVM分類器的泛化能力較弱;同理,C值越小,SVC分類器在訓(xùn)練集上的準(zhǔn)確率會(huì)降低,但是對(duì)于未知數(shù)據(jù)的泛化能力會(huì)增強(qiáng);②Kernel:核函數(shù)默認(rèn)是rbf,可以選擇“l(fā)inear”“poly”,“rbf”,“sigmoid”等;其中,“poly”表示多項(xiàng)式核函數(shù);“rbf”表示高斯核函數(shù),“sigmoid”表示sigmoid核函數(shù)。③degree:多項(xiàng)式poly核函數(shù)的維度默認(rèn)是3,選擇其他核函數(shù)時(shí)會(huì)被忽略;④gamma:“poly”,“rbf”,“sigmoid”的核函數(shù)參數(shù)默認(rèn)是’auto’;⑤coef0:核函數(shù)的常數(shù)項(xiàng)用來設(shè)置‘“poly”和“sigmoid”核函數(shù)。2、分類任務(wù)模型

子任務(wù)3:模型的設(shè)置(3)貝葉斯分類模型:利用貝葉斯的計(jì)算公式計(jì)算后驗(yàn)概率p(y/x),選擇具有最大后驗(yàn)概率的類作為該對(duì)象所屬的類別。貝葉斯分類器具有以下特點(diǎn):①數(shù)據(jù)可以是離散數(shù)據(jù)也可以是連續(xù)數(shù)據(jù);②對(duì)數(shù)據(jù)缺失、噪音等情形不敏感③若屬性相關(guān)性小分類效果好。貝葉斯分類器可以分為:多項(xiàng)式貝葉斯分類器(MultinomialNB)、高斯貝葉斯分類器(GaussianNB)、伯努利貝葉斯分類器(BernoulliNB)。上訴三種貝葉斯分類器在sklearn庫中已經(jīng)被實(shí)現(xiàn),使用代碼導(dǎo)出MultinomialNB分類器的過程如下:2、分類任務(wù)模型

子任務(wù)3:模型的設(shè)置實(shí)例化MultinomialNB對(duì)象ml,通過get_params()方法查看其中的參數(shù)的默認(rèn)值,其中常用的參數(shù)及作用如下:①alpha:指定樸素貝葉斯估計(jì)公式中λ值②class_prior=None:可以傳入數(shù)組指定每個(gè)分類的先驗(yàn)概率,None代表從數(shù)據(jù)集中學(xué)習(xí)先驗(yàn)概率③fit_prior=True:是否學(xué)習(xí)P(y=ck),不學(xué)習(xí)則以均勻分布替代3、回歸任務(wù)模型

子任務(wù)3:模型的設(shè)置(1)K近鄰回歸算法:K最鄰近法回歸算法解決回歸問題的模型為KNeighborsRegressor,其基本思想如下:給定的帶有標(biāo)記的訓(xùn)練集,當(dāng)有未知的數(shù)據(jù)x需要預(yù)測(cè)其對(duì)應(yīng)的標(biāo)簽時(shí),首先,需要計(jì)算預(yù)測(cè)數(shù)據(jù)x與訓(xùn)練集中每個(gè)數(shù)據(jù)的距離選擇其中距離最小的前K個(gè)訓(xùn)練數(shù)據(jù),根據(jù)這K個(gè)樣本的標(biāo)簽值的算術(shù)平均值或者加權(quán)平均值作為待測(cè)樣本x的標(biāo)簽值,從而實(shí)現(xiàn)預(yù)測(cè)未知數(shù)據(jù)的值。KNeighborsRegressor回歸算法在sklearn庫中已經(jīng)被實(shí)現(xiàn),使用代碼導(dǎo)出KNeighborsRegressor回歸算法的過程如下。3、回歸任務(wù)模型

子任務(wù)3:模型的設(shè)置(2)SVM回歸模型:支持向量機(jī)(SupportVectorMachine,SVM)解決回歸問題的模型為SVR模型。其基本原理:將預(yù)測(cè)值與真實(shí)值之間的平均距離作為損失函數(shù),使回歸超曲面穿過盡可能多得數(shù)據(jù)點(diǎn),通過優(yōu)化損失函數(shù)從而使整個(gè)模型達(dá)到最優(yōu)。使用代碼導(dǎo)出SVM回歸算法的過程如下。1.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)(1)二分類問題:對(duì)于一個(gè)二分類問題,樣本分為正(Positive)、負(fù)(Negative)兩類,模型的預(yù)測(cè)值與真實(shí)值之間存在如下情況:

真實(shí)值預(yù)測(cè)值PNPTPFPNFNTN如果模型預(yù)測(cè)的值為正(Positive),真實(shí)值為正,此時(shí)模型預(yù)測(cè)正確(True)記作TP;如果模型預(yù)測(cè)的值為負(fù)(Negative),真實(shí)值為正,此時(shí)模型預(yù)測(cè)錯(cuò)誤(False)記作FN;如果模型預(yù)測(cè)的值為正(Positive),真實(shí)值為負(fù),此時(shí)模型預(yù)測(cè)錯(cuò)誤(False)記作FP;如果模型預(yù)測(cè)的值為負(fù)(Negative),真實(shí)值為負(fù),此時(shí)模型預(yù)測(cè)正確(True)記作TN;1.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)假設(shè)要預(yù)測(cè)的10個(gè)樣本的真實(shí)標(biāo)簽值為變量y_true所示,而模型預(yù)測(cè)10個(gè)樣本的標(biāo)記如y_predict,其中,數(shù)字1表示樣本的標(biāo)記為正,數(shù)字0表示樣本的標(biāo)記為負(fù)。1.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)①準(zhǔn)確率:準(zhǔn)確率(Accuarcy)是指在總樣本中,模型將樣本類別預(yù)測(cè)正確的比例。預(yù)測(cè)正確包括TP和TN兩種情形,準(zhǔn)確率(Accuarcy)的計(jì)算公式如下:Accuarcy=(TP+TN)/(TP+FP+FN+TN)sklearn中accuracy_score()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的準(zhǔn)確率,代碼如下:在accuracy_score中輸入樣本對(duì)應(yīng)的真實(shí)標(biāo)記y_true和預(yù)測(cè)標(biāo)記y_predict,兩個(gè)列表中元素的數(shù)量要保持一致,輸出準(zhǔn)確率為0.5。1.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)②精確率:精確率(Precision)是指在模型預(yù)測(cè)為正的樣本中,真實(shí)值也為正的比例。精確率越高,誤報(bào)越小。精確率(Precision)的計(jì)算公式如下:Precision=TP/(TP+FP)sklearn中precision_score()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的精確率,在precision_score中輸入樣本對(duì)應(yīng)的真實(shí)標(biāo)記y_true和預(yù)測(cè)標(biāo)記y_predict代碼如下:通過計(jì)算,模型的精確率為0.6667。1.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)③召回率:召回率(Recall)是指真實(shí)值為正的樣本中,預(yù)測(cè)值也為正的比例。召回率越高,漏報(bào)越少。召回率(Recall)的計(jì)算如公式如下:Recall=TP/(TP+FN)sklearn中recall_score()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的精確率,在recall_score()中輸入樣本對(duì)應(yīng)的真實(shí)標(biāo)記y_true和預(yù)測(cè)標(biāo)記y_predict,代碼如下:通過計(jì)算,模型的召回率為0.571431.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)④F1-score:F1-score是精確率和召回率的調(diào)和平均數(shù),F(xiàn)1-score的計(jì)算如公式如下:F1-score=2*Precision*Recall/(Precision+Recall)單方面考慮只考慮精確率或召回率,會(huì)導(dǎo)致模型預(yù)測(cè)性能變差,F1-score是對(duì)該情形進(jìn)行的優(yōu)化。sklearn中f1_score()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的精確率,在f1_score()()中輸入樣本對(duì)應(yīng)的真實(shí)標(biāo)記y_true和預(yù)測(cè)標(biāo)記y_predict,代碼如下:通過計(jì)算,模型的召回率為0.61541.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)(2)多分類問題:假設(shè)要預(yù)測(cè)的10個(gè)樣本的真實(shí)標(biāo)簽值包括4個(gè)類別(0、1、2、3),其中x1表示也預(yù)測(cè)的種類值,x2表示真實(shí)的種類值。對(duì)預(yù)測(cè)結(jié)果中多種類別的精確率、召回率、F1-score等值的計(jì)算如下:1.分類任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)多類別分類任務(wù)的評(píng)價(jià)需要從sklearn庫的metrics字庫中classification_report()函數(shù),如第2行代碼所示,在classification_report()中傳入預(yù)測(cè)標(biāo)簽和真實(shí)標(biāo)簽,從而,實(shí)現(xiàn)計(jì)算這4類當(dāng)中每一類的精確率、召回率、F1-score的值,最終,準(zhǔn)確率表示所有類別的平均準(zhǔn)確率。2.回歸任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)(1)均方誤差:均方誤差(MSE,MeanSquareError)表示預(yù)測(cè)值與真實(shí)值之差的平方的均值。MSE的計(jì)算如公式如下sklearn.metrics模塊中的mean_squared_error()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的MSE,代碼如下:其中,參數(shù)squared=False表示對(duì)MSE值開根號(hào):2.回歸任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)(2)平均絕對(duì)誤差:平均絕對(duì)誤差(MAE,MeanAbsoluteError)表示預(yù)測(cè)值和真實(shí)值之差的絕對(duì)值的均值。MAE的計(jì)算如公式如下sklearn.metrics模塊中的mean_absolute_error()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的MAE,代碼如下:2.回歸任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)(3)平均絕對(duì)百分比誤差:平均絕對(duì)百分比誤差(MAPE,MeanAbsolutePercentageError)表示絕對(duì)誤差與真是誤差的百分比。MAPE計(jì)算公式如下:sklearn.metrics模塊中的mean_absolute_percentage_error()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的MAPE,代碼如下:2.回歸任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)(4)均分誤差對(duì)數(shù):均分誤差對(duì)數(shù)(MSLE,MeanSquaredLogError)表示對(duì)數(shù)平方差的均值,MSLE的計(jì)算公式如下:sklearn.metrics模塊中的mean_squared_log_error()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的MSLE,代碼如下:2.回歸任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)(5)R2(RSquared):R2也叫擬合度,反映的是自變量對(duì)因變量的變動(dòng)解釋程度,其值越接近1,說明模型的性能越好,R2的計(jì)算如公式如下:sklearn.metrics模塊中的r2_score()函數(shù)能夠根據(jù)真實(shí)值與預(yù)測(cè)值進(jìn)行自動(dòng)計(jì)算模型的MSLE,代碼如下:2.回歸任務(wù)中的評(píng)價(jià)標(biāo)準(zhǔn)

子任務(wù)4:模型的評(píng)價(jià)上述用來衡量預(yù)測(cè)值與真實(shí)值之間的誤差評(píng)價(jià)指標(biāo),如果考慮真實(shí)值和預(yù)測(cè)值的絕對(duì)誤,則選用MAE;如果考慮真實(shí)值和預(yù)測(cè)值的差的平方,則選用MSE;如果希望模型能找到解釋預(yù)測(cè)值y變動(dòng)的因素,則選用R2。當(dāng)模型擬合數(shù)據(jù)的預(yù)測(cè)低于輸出值的平均值時(shí),R2就會(huì)出現(xiàn)負(fù)分?jǐn)?shù)。3.過擬合欠擬合

子任務(wù)4:模型的評(píng)價(jià)回歸任務(wù)和分類任務(wù)中為了讓模型獲得較好的泛化能力,使用訓(xùn)練好的模型對(duì)測(cè)試集分別采用分類和回歸的評(píng)價(jià)指標(biāo)進(jìn)行測(cè)試,通過測(cè)試誤差來評(píng)價(jià)。(1)欠擬合:指的是在訓(xùn)練集中預(yù)測(cè)值與真實(shí)值之間的誤差較大,在測(cè)試集中預(yù)測(cè)值與真實(shí)值之間的誤差也較大,導(dǎo)致模型的預(yù)測(cè)不準(zhǔn)確。處理方法:可以通過增加特征列的數(shù)目、選用更高復(fù)雜度的模型來重新訓(xùn)練模型,從而減小預(yù)測(cè)值與真實(shí)值的誤差,提高模型的準(zhǔn)確性。(2)過擬合:指的是在訓(xùn)練集中預(yù)測(cè)值與真實(shí)值之間的誤差較小,在測(cè)試集中預(yù)測(cè)值與真實(shí)值之間的誤差卻較大,導(dǎo)致模型預(yù)測(cè)性能不穩(wěn)定。處理方法:可以通過減少特征列的數(shù)目、降低模型復(fù)雜度、對(duì)模型中的參數(shù)進(jìn)行正則化處理方式來重新訓(xùn)練模型,從而減小預(yù)測(cè)值與真實(shí)值的誤差,提高模型的穩(wěn)定性。4.模型的選取

子任務(wù)4:模型的評(píng)價(jià)為了挑選出在訓(xùn)練集和測(cè)試集上表現(xiàn)優(yōu)異的模型,通常采用k折交叉驗(yàn)證的方式來對(duì)模型進(jìn)行選擇,具體實(shí)現(xiàn)步驟如下:(1)在訓(xùn)練集中將數(shù)據(jù)分為k份,進(jìn)行k次訓(xùn)練;(2)第i次(1<i<k)訓(xùn)練時(shí),選擇訓(xùn)練集中的第i份數(shù)據(jù)作為驗(yàn)證集,剩下的k-1份作為訓(xùn)練,得到第k個(gè)分類模型;(3)評(píng)估k個(gè)模型的效果,挑選出性能最好的訓(xùn)練模型。(4)最后,使用訓(xùn)練好的模型對(duì)測(cè)試集中未知數(shù)據(jù)進(jìn)行預(yù)測(cè),來檢查模型的穩(wěn)定性。

目錄任務(wù)一Python基礎(chǔ)語法的集訓(xùn)任務(wù)二機(jī)器學(xué)習(xí)基礎(chǔ)任務(wù)三回歸任務(wù)—波士頓房?jī)r(jià)預(yù)測(cè)任務(wù)四分類任務(wù)—鳶尾花分類1.數(shù)據(jù)集分析

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理boston_house_price.csv波士頓房?jī)r(jià)數(shù)據(jù)集是機(jī)器學(xué)中的一個(gè)常用的數(shù)據(jù)集,常用來驗(yàn)證回歸算法的性能。其中,“MEDV”為標(biāo)簽列,數(shù)據(jù)在boston_house_price.csv中的具體解釋如下:列名列名的含義備注:CRIM城鎮(zhèn)人均犯罪率

ZN住宅地超過25000平方英尺的比例

INDUS城鎮(zhèn)非零售商用土地的比例

CHAS查理斯河空變量如果邊界是河流,值為1,否則為0NOX一氧化碳濃度

RM住宅平均房間數(shù)

AGE1940年之前建成的自用房屋比例

DIS到波士頓五個(gè)中心區(qū)區(qū)域的加權(quán)距離

RAD輻射性公路的接近指數(shù)

TAX每10000美元的全值財(cái)產(chǎn)產(chǎn)稅率

PTRATIO城鎮(zhèn)師生比例

B城鎮(zhèn)中黑人的比例

LSTAT人口中地位低下者的比例

MEDV自住房的平均房?jī)r(jià)(以千美元計(jì))該類數(shù)據(jù)為標(biāo)簽列2.數(shù)據(jù)缺失值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理使用文本編輯器打開boston_house_princes.csv文件,如圖6.3-1所示,文件的第一行內(nèi)容不是列名,列名出現(xiàn)在第二行。因此,使用pandas庫讀取文件內(nèi)容時(shí),需要跳過第一行將第二行的真名列名作為表頭。在使用pandas.read_csv()方法讀入數(shù)據(jù)時(shí),設(shè)置參數(shù)skiprows=[0]來跳過指定行號(hào)對(duì)應(yīng)這一行數(shù)據(jù)。2.數(shù)據(jù)缺失值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理(1)缺失值的檢測(cè):接下來,需要查看每一列的缺失情況。使用()獲取整個(gè)數(shù)據(jù)集的摘要,查看每一列數(shù)據(jù)的分布情況。在輸出的結(jié)果中:“508entries”標(biāo)明每一列都有508行,其中,“INDUS”、“NOX”、“TAX”列中非空的行數(shù)均少于508行,因此,這三列中數(shù)據(jù)有缺失。2.數(shù)據(jù)缺失值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理(2)缺失值的處理:對(duì)于缺失值的處理:①使用dropna()方法刪除缺失值所在行,②使用fillna()對(duì)缺失的位置進(jìn)行填充從而保留該行數(shù)據(jù)。本數(shù)據(jù)集的樣本容量小,因此,選擇使用填充的方式來保留該行數(shù)據(jù)。首先,定位“INDUS”列中的缺失值所在的行號(hào),將data[‘INDUS’].isnull()作為條件置于data的索引中,即可找出缺失值對(duì)應(yīng)的行號(hào)為20。2.數(shù)據(jù)缺失值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理然后,根據(jù)行號(hào)通過data.loc[19:22,:]來查看20行前后位置(即19~22行)在“INDUS”位置上的數(shù)據(jù),此時(shí),缺失數(shù)據(jù)的前后都為同一個(gè)數(shù)據(jù)。因此,可以選用缺失值的后一個(gè)值進(jìn)行填充。2.數(shù)據(jù)缺失值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理調(diào)用fillna()函數(shù)來進(jìn)行數(shù)據(jù)的填充,其中,參數(shù)method取值為‘ffill’、‘bfill’分別表示使用前一個(gè)數(shù)填充或后一個(gè)數(shù)值進(jìn)行填充,參數(shù)inplace=True表示填充后的數(shù)據(jù)覆蓋原數(shù)據(jù),最終,查看第20行“INDUS”列的數(shù)據(jù)變?yōu)榱?.14。對(duì)“NOX”、“TAX”列中的缺失值進(jìn)行同樣的處理。3.數(shù)據(jù)重復(fù)值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理(1)重復(fù)值的檢測(cè):數(shù)據(jù)的重復(fù)主要指的行數(shù)據(jù)與之前的某些行數(shù)據(jù)重復(fù)。行數(shù)據(jù)的重復(fù)需要判斷某一行數(shù)據(jù)與之前行有重復(fù)。直接在表格數(shù)據(jù)對(duì)象data中調(diào)用duplicated().sum()統(tǒng)計(jì)相同行的數(shù)量,輸出結(jié)果為2標(biāo)明在整個(gè)表格中有2行內(nèi)容有之前行有重復(fù)。3.數(shù)據(jù)重復(fù)值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理將data.duplicated()作為條件置于data.loc中的行索引的位置上即可篩選出重復(fù)值所在行的內(nèi)容。從結(jié)果可以看出行號(hào)為123的行數(shù)據(jù)與之前的某些行有重復(fù),行號(hào)為169的行數(shù)據(jù)與之前的某些行有重復(fù)。3.數(shù)據(jù)重復(fù)值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理(2)重復(fù)數(shù)據(jù)的處理:重復(fù)值的常用的處理方式是刪除多次的行只保留其中一次內(nèi)容。在表格數(shù)據(jù)中去除重復(fù)行使用drop_duplicates()函數(shù),在該函數(shù)中參數(shù)keep值為‘first’表示保留重復(fù)值當(dāng)中的第一個(gè)出現(xiàn)的位置,keep值為‘last’表示保留重復(fù)值當(dāng)中最后一次出現(xiàn)的位置。如果要使去除重復(fù)行數(shù)的結(jié)果在原數(shù)據(jù)上生效,需要將函數(shù)中的inplace參數(shù)設(shè)置為True。3.數(shù)據(jù)重復(fù)值

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理輸出121~124行內(nèi)容從結(jié)果中可以發(fā)現(xiàn),因?yàn)閗eep=first保留第一次出現(xiàn)的重復(fù)值,所以重復(fù)內(nèi)容對(duì)應(yīng)的行號(hào)123被消除了,因此,需要將剩下的行號(hào)重新設(shè)置。刪除兩個(gè)重復(fù)數(shù)據(jù)后此時(shí)行數(shù)變?yōu)?06行,如圖6.3-10所示用列表生成器生成一個(gè)從1到506列表;對(duì)data.index屬性對(duì)應(yīng)的行號(hào)按照列表中從1到506的順序重新設(shè)置行號(hào)。4.數(shù)據(jù)異常

子任務(wù)1:數(shù)據(jù)預(yù)集的預(yù)處理(1)異常數(shù)據(jù)的檢測(cè):當(dāng)前的列數(shù)據(jù)為數(shù)值類型,可以通過計(jì)算離群點(diǎn)方式來判斷。定義計(jì)算離群點(diǎn)函數(shù)outer(x),參數(shù)x表示傳入的列數(shù)據(jù),在代碼第2行取出該列的第1個(gè)四分位數(shù)Q1,在代

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論