《Python金融數(shù)據(jù)挖掘》-ppt課件第11章
,Python,金融數(shù)據(jù)挖掘,高等教育出版,第十一章,K,近鄰分類,與,K,均值聚類,算法,Python金融數(shù)據(jù)挖掘 高等教育出版第十一章K近鄰分類,【知識(shí)框架圖】,K,點(diǎn)分類,聚類算法,K,近鄰分類,算法應(yīng)用場(chǎng)景,算法流程與實(shí)現(xiàn),K,均值聚類,算法應(yīng)用場(chǎng)景,算法流程與實(shí)現(xiàn),【知識(shí)框架圖】K點(diǎn)分類聚類算法K近鄰分類算法應(yīng)用場(chǎng)景算法流程,目錄,Contents,第一節(jié),K,近鄰分類原理與實(shí)現(xiàn),第二節(jié),K,均值聚類原理與實(shí)現(xiàn),第三節(jié),案例,目錄Contents第一節(jié)K近鄰分類原理與實(shí)現(xiàn)第二節(jié)K均值聚,本章,學(xué)習(xí)目標(biāo),掌握,K,近鄰分類算法研究的對(duì)象、意義、應(yīng)用場(chǎng)景、算法原理及其實(shí)現(xiàn)。,掌握,K,均值聚類算法研究的對(duì)象、意義、應(yīng)用場(chǎng)景、算法原理及其實(shí)現(xiàn)。,本章學(xué)習(xí)目標(biāo)掌握K近鄰分類算法研究的對(duì)象、意義、應(yīng)用場(chǎng)景、算,需求背景,K,近鄰(,KNN,,,K Nearest Neighbors,)算法屬于分類算法。樣本數(shù)據(jù)集中除了數(shù)據(jù)點(diǎn)的坐標(biāo),每個(gè)點(diǎn)還有一個(gè)分類標(biāo)簽,。,如果,現(xiàn)在新出現(xiàn)了一個(gè)待分類的數(shù)據(jù)點(diǎn),A,,,KNN,算法是根據(jù)與,A,相鄰的,K,個(gè)樣本點(diǎn)分類歸屬情況,來(lái)決定,A,應(yīng)該歸屬到哪一類。前面章節(jié)介紹過(guò)的決策樹算法、貝葉斯算法和,K,近鄰算法都屬于分類算法。,K,均值(,K-Means,)算法屬于聚類算法。樣本數(shù)據(jù)集中只有數(shù)據(jù)點(diǎn)的坐標(biāo),并沒有其分類標(biāo)簽,。,但是,這些點(diǎn)并不是均勻分布在整個(gè)坐標(biāo)空間中,而是相對(duì)密集地聚集在幾個(gè)較小的范圍內(nèi),。,聚類,算法的目標(biāo)是發(fā)現(xiàn)這些聚集的范圍,將所有那些沒有分類標(biāo)簽的點(diǎn),劃分到某個(gè)聚集范圍內(nèi)。,聚類算法和分類算法的區(qū)別在于:聚類算法是無(wú)監(jiān)督的,樣本數(shù)據(jù)可以沒有貼標(biāo)簽;而分類算法是有監(jiān)督的,樣本數(shù)據(jù)需要有類別標(biāo)簽。通俗理解,分類算法是貼標(biāo)簽,而聚類算法是找朋友(物以類聚,人以群分)。,需求背景K近鄰(KNN,K Nearest Neighbor,01,K,近鄰分類原理與實(shí)現(xiàn),01K近鄰分類原理與實(shí)現(xiàn),K,近鄰分類算法的邏輯非常直觀:待分類的這個(gè)數(shù)據(jù)點(diǎn)歸屬到哪一類,由它的,K,個(gè)近鄰樣本點(diǎn)的分類情況決定。,每個(gè)樣本數(shù)據(jù)點(diǎn)都有若干個(gè)屬性,例如一個(gè)手機(jī)網(wǎng)銀用戶的信息構(gòu)成這樣一個(gè)屬性集合:,年齡,學(xué)歷,收入,,。,通過(guò),某種規(guī)則,將這些屬性值轉(zhuǎn)換成坐標(biāo)值,即將用戶轉(zhuǎn)換成,n,維空間中的一個(gè)點(diǎn)。為了簡(jiǎn)單起見,后文闡述以二維空間的點(diǎn)為例,。,如,圖,11-2,所示,待分類的數(shù)據(jù)點(diǎn)為,A,,圖中用圓表示;其他的數(shù)據(jù)分類結(jié)果是已知的(所謂有監(jiān)督的學(xué)習(xí),表示監(jiān)督者已經(jīng)分好類,打好標(biāo)簽了),被分為,1,和,2,兩類,分別用三角形和矩形表示。,K近鄰分類算法的邏輯非常直觀:待分類的這個(gè)數(shù)據(jù)點(diǎn)歸屬到哪一類,Python金融數(shù)據(jù)挖掘-ppt課件第11章,圖,11-2 K,近鄰算法,示意圖:,A,點(diǎn)的分類結(jié)果可以簡(jiǎn)單地選擇,K,近鄰中相對(duì)多數(shù)的分類標(biāo)簽,例如,圖,11-2,中,A,的,3,個(gè)近鄰中有,2,個(gè)分類結(jié)果為,2,,占據(jù)多數(shù),因此,A,的分類結(jié)果為,2,。,也,可以相對(duì)復(fù)雜地按照距離遠(yuǎn)近進(jìn)行權(quán)重投票,圖,11 2,中分類標(biāo)簽為,1,的近鄰雖然只有,1,個(gè),但是它離,A,最近,如果權(quán)重比例足夠大,也有可能影響到,A,的最終分類結(jié)果。,圖 11-2 K近鄰算法示意圖:,K,近鄰分類算法的,流程圖:,K近鄰分類算法的流程圖:,【,例,11-1,】,下面代碼,首先新建了兩個(gè)數(shù)據(jù)點(diǎn),testX,和,testY,,再分別調(diào)用,kNNClassify,函數(shù)計(jì)算其分類歸屬。,K,近鄰算法有比較直觀的解釋(特別是在低維空間中),其歐氏距離的計(jì)算量也相對(duì)比較小,是一個(gè)應(yīng)用很廣的基礎(chǔ)分類算法。,【例 11-1】,定義一,個(gè)用于計(jì)算歐氏距離的函數(shù),euclDistance,,使用,numpy,中的函數(shù)計(jì)算由列表形式存儲(chǔ)的兩個(gè)向量的歐式距離。,定義一個(gè)用于計(jì)算歐氏距離的函數(shù)euclDistance,使用,創(chuàng)建一個(gè)數(shù)據(jù)集,包含,2,個(gè)類別共,8,個(gè)樣本,:,創(chuàng)建一個(gè)數(shù)據(jù)集,包含2個(gè)類別共8個(gè)樣本:,KNN,分類算法函數(shù)實(shí)現(xiàn),:,定義一個(gè),kNNClassify,函數(shù)。根據(jù),dataSet,和,labels,的輸入,選擇待分類點(diǎn),newInput,的,k,個(gè)近鄰,決定其分類歸屬。,KNN分類算法函數(shù)實(shí)現(xiàn):,生成數(shù)據(jù)集和類別標(biāo)簽,:,生成數(shù)據(jù)集和類別標(biāo)簽:,02,K,均值聚類原理與實(shí)現(xiàn),02K均值聚類原理與實(shí)現(xiàn),聚類,算法不需要事先對(duì)樣本點(diǎn)的類別歸屬進(jìn)行判定和標(biāo)識(shí),而是能夠挖掘出現(xiàn)有樣本點(diǎn)的分布聚集規(guī)律,對(duì)樣本點(diǎn)自動(dòng)進(jìn)行歸屬劃分,。,聚類,算法被廣泛應(yīng)用于客戶群體劃分、熱點(diǎn)區(qū)域發(fā)現(xiàn)等業(yè)務(wù)場(chǎng)景。例如:某證券公司一共有,N,個(gè)客戶,每個(gè)客戶的資金量、交易頻次等數(shù)據(jù)構(gòu)成一個(gè)樣本點(diǎn),。,現(xiàn)在,希望能設(shè)計(jì)出一套手續(xù)費(fèi)費(fèi)率優(yōu)惠方案,既能夠較好地體現(xiàn)大客戶優(yōu)惠,又可以保證本公司的總體收入,。,這時(shí)候,就可以對(duì)這,N,個(gè)樣本點(diǎn)進(jìn)行聚類分析,找出客戶支付手續(xù)費(fèi)的不同聚集群體,有針對(duì)性地設(shè)計(jì)費(fèi)率方案。又如:某銀行要開展理財(cái)產(chǎn)品現(xiàn)場(chǎng)促銷活動(dòng),需要選擇熱點(diǎn)商圈(即客戶分布較密集的區(qū)域)來(lái)提升活動(dòng)的潛在客戶數(shù)量,。,這時(shí)候,就要對(duì)手機(jī)網(wǎng)銀,APP,所提供的位置信息進(jìn)行聚類,找出活動(dòng)時(shí)間段內(nèi)潛在客戶的熱點(diǎn)活動(dòng)區(qū)域,從而讓盡可能多的客戶了解促銷的信息,。,聚類算法不需要事先對(duì)樣本點(diǎn)的類別歸屬進(jìn)行判定和標(biāo)識(shí),而是能夠,假設(shè),現(xiàn)在采集到二維坐標(biāo)空間中的由,80,個(gè)坐標(biāo)點(diǎn)構(gòu)成的數(shù)據(jù)集(可以理解成是一個(gè),APP,采集到的,80,個(gè)客戶的某時(shí)點(diǎn)位置坐標(biāo)),如表,11-1,所示,將數(shù)據(jù)保存在,Python,工作目錄下,命名為“,testSet.txt”,。:,X,Y,X,Y,X,Y,X,Y,1.658985,4.285136,2.336445,2.875106,2.096701,3.886007,2.89422,2.489128,-3.453687,3.424321,-1.786345,2.554248,-2.70903,2.923887,-2.56254,2.884438,4.838138,-1.151539,2.190101,-1.90602,3.367037,-3.18479,3.491078,-3.94749,-3.195883,-2.283926,-3.837877,-3.253815,-3.17118,-3.57245,-4.90557,-2.91107,表,111 80,個(gè)點(diǎn)坐標(biāo)數(shù)據(jù),假設(shè)現(xiàn)在采集到二維坐標(biāo)空間中的由80個(gè)坐標(biāo)點(diǎn)構(gòu)成的數(shù)據(jù)集(可,應(yīng)用聚類算法前,通常需要根據(jù)數(shù)據(jù)集的分布情況確定一個(gè)合理的聚類數(shù),K,,因此,事先探查數(shù)據(jù)集的空間分布情況有利于提高聚類的效果。在眾多的數(shù)據(jù)可視化工具中,,Excel,便是一個(gè)非常有效的探查樣本數(shù)據(jù)(樣本數(shù)據(jù)量太大時(shí),可以先隨機(jī)抽取出少量樣本)空間分布特征的工具。針對(duì)表,11-1,中的數(shù)據(jù)集,我們可以借助,Excel,來(lái)繪制散點(diǎn)圖,如圖,11-4,所示。根據(jù),Excel,散點(diǎn)圖展示的數(shù)據(jù)分布情況可以發(fā)現(xiàn),其主要聚集在四個(gè),區(qū)域:,圖 11-4 80個(gè)點(diǎn)坐標(biāo)圖,應(yīng)用聚類算法前,通常需要根據(jù)數(shù)據(jù)集的分布情況確定一個(gè)合理的聚,K,均值算法思想有直觀的幾何意義:將樣本點(diǎn)聚集(歸屬)到,距離,它最近的那個(gè),聚類中心,。找出數(shù)據(jù)集中的,K,個(gè)聚類中心是算法的目標(biāo)(簡(jiǎn)單起見,這里使用歐式距離來(lái)度量樣本間的相似度),。,K均值算法思想有直觀的幾何意義:將樣本點(diǎn)聚集(歸屬)到距離它,K,均值聚類算法流程圖,:,K均值聚類算法流程圖:,【,例,11-2】,Python,實(shí)現(xiàn),:,initCentroids,函數(shù)根據(jù)當(dāng)前樣本數(shù)據(jù)集和指定的,k,,隨機(jī)生成,k,個(gè)中心點(diǎn),用于聚類。,【例 11-2】Python實(shí)現(xiàn):initCentroids,K,均值聚類,:,K均值聚類:,2,維平面顯示聚類結(jié)果,:,2維平面顯示聚類結(jié)果:,調(diào)用以上函數(shù),對(duì)讀入數(shù)據(jù)進(jìn)行聚類,:,原始數(shù)據(jù)分布,調(diào)用以上函數(shù),對(duì)讀入數(shù)據(jù)進(jìn)行聚類:原始數(shù)據(jù)分布,輸出結(jié)果:,根據(jù)聚類結(jié)果用不同的樣式顯示不同聚類的數(shù)據(jù)點(diǎn),并且突出顯示了算法求出的,k=4,個(gè)聚類中心點(diǎn)。,K,均值聚類結(jié)果,輸出結(jié)果:K均值聚類結(jié)果,03,案例,03案例,銀行客戶群體,劃分,案例,某銀行要根據(jù)客戶資料制定新的促銷方案,客戶資料信息如表,11 2,所示。使用本章介紹的兩個(gè)聚類算法,對(duì)客戶進(jìn)行聚類分析,從而確定促銷的客戶群體劃分方案,。,客戶,信息,如下:,ID,性別,年齡,年收入,(,萬(wàn)元,),消費(fèi)評(píng)分,(1-100),1,Male,19,15,39,2,Male,21,15,81,3,Female,20,16,6,4,Female,23,16,77,5,Female,31,17,40,6,Female,22,17,76,7,Female,35,18,6,8,Female,23,18,94,9,Male,64,19,3,Male,30,137,83,銀行客戶群體劃分案例ID性別年齡年收入(萬(wàn)元)消費(fèi)評(píng)分(1-,導(dǎo)入數(shù)據(jù):,首先讀入數(shù)據(jù)文件,觀察數(shù)據(jù)結(jié)構(gòu)。為了便于后續(xù)數(shù)據(jù)規(guī)格化,將,ID,和性別列舍去,僅剩下,年齡、年收入、消費(fèi)評(píng)分,三個(gè)屬性。,導(dǎo)入數(shù)據(jù):,為了,能夠以合適的尺度在坐標(biāo)軸上展示數(shù)據(jù),調(diào)用了,sklearn,包,preprocessing,中的,scale,函數(shù),將所有的數(shù)據(jù)值進(jìn)行規(guī)格化。,Sklearn,包將在后續(xù)章節(jié)中專門介紹。,為了能夠以合適的尺度在坐標(biāo)軸上展示數(shù)據(jù),調(diào)用了sklearn,繪制,3,維圖,:,第,5,行直接使用了,sklearn.decomposition,提供的,pca.fit_transform,函數(shù),將,3,維降低到,2,維。,pca.fit_transform,函數(shù)使用了,PCA,方法對(duì)數(shù)據(jù)集進(jìn)行降維操作,,PCA,(,Principal Component Analysis,,主成分分析方法)是一種將原來(lái)的高維特征映射到低維空間的數(shù)學(xué)方法,既能降低數(shù)據(jù)維度,又能盡可能地保留高維信息。,繪制3維圖:第5行直接使用了sklearn.decompos,數(shù)據(jù)降為,2,維,,,繪制,2,維圖,:,數(shù)據(jù)降為2維,繪制2維圖:,K,均值聚類,K均值聚類,將,case_clusterAssment,中的聚類結(jié)果寫回原始,DataFrame,將case_clusterAssment中的聚類結(jié)果寫回原始,輸出結(jié)果:,輸出結(jié)果:,結(jié)論:,將聚類得到的,case_clusterAssment,聚類結(jié)果寫回到原數(shù)據(jù),DataFrame,中,然后分別按照聚類結(jié)果對(duì)年齡、年收入、消費(fèi)評(píng)分進(jìn)行均值統(tǒng)計(jì),。,可以,發(fā)現(xiàn),不同聚類的客戶,在這三個(gè)屬性的平均值上都存在顯著的差異。例如,聚類結(jié)果為,1,的客戶,平均年齡,45,,平均收入,82,最高(年富力強(qiáng)階段,收入較高),平均消費(fèi)評(píng)分,24,最低(社會(huì)階層穩(wěn)定,違約風(fēng)險(xiǎn)最低),。,聚類,結(jié)果和我們按照社會(huì)生活經(jīng)驗(yàn)判定的結(jié)果吻合地比較好。,結(jié)論:,本章小結(jié),本章介紹了,K,近鄰分類和,K,均值算法的基本概念和原理,學(xué)會(huì)了用,Python,代碼實(shí)現(xiàn),K,近鄰分類和,K,均值算法。,本章小結(jié)本章介紹了K近鄰分類和K均值算法的基本概念和原理,學(xué),重要概念,1,.,分類,與聚類,2,.K,近鄰分類,3,.K,均值算法,重要概念1.分類與聚類,復(fù)習(xí)思考題,1,.,給出一個(gè)數(shù)據(jù)集,data_multivar.txt,,里面有,200,個(gè)點(diǎn)坐標(biāo),在平面坐標(biāo)系下可以畫出它的散點(diǎn)圖,如圖,11-8,所,示:,圖,118,數(shù)據(jù)集,data_multivar.txt,散點(diǎn)圖,用,K,均值算法來(lái)訓(xùn)練模型,將該數(shù)據(jù)集的,200,個(gè)點(diǎn)分成,4,類,請(qǐng)運(yùn)行,Python,代碼,ch13-ex.ipynb,。注意:運(yùn)行之前,首先將給出的數(shù)據(jù)集,data_multivar.txt,和,utilities.py,拷貝到相應(yīng)的文件夾中。讀者可以在程序中設(shè)置,k,值為,2,,,3,,,5,等,運(yùn)行代碼進(jìn)行比較。,復(fù)習(xí)思考題1.給出一個(gè)數(shù)據(jù)集data_multivar.t,復(fù)習(xí)思考