版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、深圳大學(xué)研究生課程(kchng):模式識(shí)別理論與方法課程(kchng)作業(yè)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)(shyn)名稱:Classification and Regression Tree 實(shí)驗(yàn)編號(hào):Proj08-01姓 名:蕭嘉慰學(xué) 號(hào):2110130216規(guī)定提交日期:2012年7月14 日實(shí)際提交日期:2012年7月13日摘 要:本實(shí)驗(yàn)編程實(shí)現(xiàn)了分類回歸樹算法,采用非剪枝完全樹分類和進(jìn)行進(jìn)行非二叉分支。實(shí)驗(yàn)(shyn)內(nèi)容:寫一個(gè)(y )生成二叉分類樹的通用程序,并使用課本 359頁(yè)的表中的數(shù)據(jù)來(lái)訓(xùn)練該樹,使用熵不純度(chnd)進(jìn)行分支。 (a) 采用非剪枝完全樹分類下列模式: A,E,I,L,N,
2、D,E,J,K,N, B,F,J,K,M, C,D,J,L,N。 (b) 對(duì)葉節(jié)點(diǎn)進(jìn)行剪枝,使剪枝后樹的不純度的增加盡可能小。 (c) 修改程序,使之可以進(jìn)行非二叉分支,以生成多叉樹。其中每個(gè)節(jié)點(diǎn)的分叉數(shù)可根據(jù)該節(jié)點(diǎn)在訓(xùn)練時(shí)的情況進(jìn)行自動(dòng)確定。 用增益比不純度重新訓(xùn)練生成一個(gè)新樹, 并用該樹重新對(duì)(a)進(jìn)行分類。技術(shù)論述: 分類回歸樹算法其采用基于最小距離的基尼指數(shù)估計(jì)函數(shù), 這是因?yàn)榛嶂笖?shù)可以單獨(dú)考慮子數(shù)據(jù)集中類屬性的分布情況, 用來(lái)決定由該子數(shù)據(jù)集生成的決策樹的拓展形狀。CART創(chuàng)建簡(jiǎn)單二叉樹結(jié)構(gòu)對(duì)新事例進(jìn)行分類, 這樣可以有效地處理缺失數(shù)據(jù), 尤其對(duì)于分類與預(yù)測(cè)時(shí)更好。并且 CART方
3、法中有貝葉斯分類的特征, 使用者可以提供主觀的分類先驗(yàn)概率作為選擇分類的權(quán)重, 則 CART在獲得最終選擇樹前使用交叉檢驗(yàn)來(lái)評(píng)估候選樹的誤分類率, 這對(duì)分析復(fù)雜樣本數(shù)據(jù)非常有用。CART處理離散變量與連續(xù)變量同樣容易, 這是由于它使用了或形狀的幾乎不依靠無(wú)關(guān)變量的分支。而且, 被CART 考慮到的分支在任何單調(diào)轉(zhuǎn)換下是不變的,如對(duì)一個(gè)或更多的特征取對(duì)數(shù)、平方根等都是不變的。實(shí)驗(yàn)結(jié)果與討論:Tree = Label: 1 Value: 66 Num: 20 Right: 1x1 struct Left: 1x1 struct(a)W1 = 1W2 = 3W3 = 1W4 = 3(b)W1 = 1
4、W2 = 3W3 = 1W4 = 3(c) 做不出來(lái),程序(chngx)出不了結(jié)果。 附錄:實(shí)驗(yàn)(shyn)程序(1)子函數(shù)function Tree=CART_MakeBinaryTree(TrainingSamples, ClassificationProperties, Region)% 基于 熵不純度(chnd) 遞歸地實(shí)現(xiàn) 非剪枝完全二叉樹%輸入?yún)?shù):目標(biāo)數(shù)據(jù)(shj)(訓(xùn)練樣本)TrainingSamples n*d、 (特征向量依次放置)% 對(duì)應(yīng)的類別屬性 ClassificationProperties n*1、(取值范圍 1-C) % 特征向量維度順序下上限 Region d
5、*2 (特征值取離散的自然數(shù)區(qū)間,左小右大)%輸出參數(shù):一個(gè)基本樹形節(jié)點(diǎn) Tree % 基本樹形節(jié)點(diǎn)結(jié)構(gòu) %一:標(biāo)簽(記錄當(dāng)前節(jié)點(diǎn)判定所用的維度,表葉子時(shí)為空);%二:閾值(記錄當(dāng)前所用維度判定之閾值,葉子節(jié)點(diǎn)時(shí)表類別);%三:左枝(小于等于閾值的待分目標(biāo) 歸于此,表葉子時(shí)為空)%四:右枝(大于閾值的 歸于此,表葉子時(shí)為空)n,Dim=size(TrainingSamples); t,m=size(Region);if Dim = t | m = 2 disp(參數(shù)錯(cuò)誤,請(qǐng)檢查); return;end%檢查類別屬性是否單純,如果只有一個(gè)屬性,那么則是葉子,否則需要繼續(xù)分if ( length
6、(unique(ClassificationProperties) = 1) Tree.Right = ; Tree.Left = ; Tree.Label = ; Tree.Value = ClassificationProperties(1); Tree.Num =n; return;end%如果兩個(gè)樣本 為兩類 直接設(shè)置為左右葉子 差異最大維度做為查詢項(xiàng)目%單獨(dú)處理此類情況,做為一種(y zhn)優(yōu)化方法應(yīng)對(duì) 后面提到的缺陷if length(ClassificationProperties) = 2 m,p=max(abs(TrainingSamples(1,:) -TrainingS
7、amples(2,:); Tree.Label = p; Tree.Value = (TrainingSamples(1,p) +TrainingSamples(2,p)/2); %floor Tree.Num =n; BranchRight.Right = ; BranchRight.Left = ; BranchRight.Label = ; BranchRight.Num =1; BranchLeft.Num =1; BranchLeft.Right = ; BranchLeft.Left = ; BranchLeft.Label = ; if TrainingSamples(1,p)
8、Tree.Value BranchRight.Value = ClassificationProperties(1); BranchLeft.Value = ClassificationProperties(2); else BranchRight.Value = ClassificationProperties(2); BranchLeft.Value = ClassificationProperties(1); end Tree.Right = BranchRight; Tree.Left = BranchLeft; return;end%確定 節(jié)點(diǎn)標(biāo)簽(當(dāng)前節(jié)點(diǎn)判定所用的維度),不純度下
9、降落差(luch)最大的維度當(dāng)選%依次計(jì)算(j sun)各個(gè)維度當(dāng)選之后所造成的不純度之和 %每個(gè)維度中可選值中 最大值代表本維度Dvp=zeros(Dim,2); %記錄每個(gè)維度中最大的不純度 及相應(yīng)的閾值for k=1:Dim EI=-20*ones(Region(k,2)-Region(k,1)+1,1); Iei=0; for m =Region(k,1):Region(k,2) Iei =Iei +1; %計(jì)算臨時(shí)分類結(jié)果 去右邊的記為 1 CpI=TrainingSamples(:,k) m; SumCpI=sum(CpI); if SumCpI = n | SumCpI = 0
10、%分到一邊去了,不妥,直接考察(koch)下一個(gè) continue; end CpI=not(CpI),CpI; EIt=zeros(2,1); %統(tǒng)計(jì)預(yù)計(jì) 新分到左右兩枝的類別及相應(yīng)(xingyng)的比率,然后得出熵不純度 for j=1:2 Cpt=ClassificationProperties(CpI(:,j); if ( length(unique(Cpt) = 1) %應(yīng)對(duì) hist() 在處理同一元素時(shí)所存在的異常(ychng)問題 Pw =0; else Pw=hist(Cpt,unique(Cpt); Pw=Pw/length(Cpt); Pw=Pw.*log2(Pw);
11、end EIt(j)=sum(Pw); end Pr=length(Cpt)/n; EI(Iei)=EIt(1) *(1-Pr) + EIt(2) *Pr; end maxEI, p =max(EI); NmaxEI=sum(EI =maxEI); if NmaxEI 1 %如果最大值有多個(gè),取中間那一個(gè), 稍微改進(jìn)了默認(rèn)地只取第一個(gè)最大值的缺陷 t=find(EI =maxEI); p=round(NmaxEI /2); p=t(p); end Dvp(k,1)=maxEI; Dvp(k,2)=Region(k,1) +p -1;end %更新節(jié)點(diǎn)標(biāo)簽和閾值maxDv, p=max(Dvp(
12、:,1); NmaxDv=sum(Dvp(:,1) =maxDv); if NmaxDv 1 %如果最大值有多個(gè),采用取值范圍較小的那一個(gè)維度屬性, 稍微改進(jìn)了默認(rèn)地只取第一個(gè)最大值的缺陷 t=find(Dvp(:,1) =maxDv); D,p=min(Region(t,2) -Region(t,1); p=t(p); end Tree.Label = p; Tree.Value = Dvp(p,2);%將訓(xùn)練樣本分成(fn chn)兩類,開始遞歸 CprI=TrainingSamples(:,p) Dvp(p,2); CplI=not(CprI); Tree.Num =n; Tree.Ri
13、ght = CART_MakeBinaryTree(TrainingSamples(CprI,:), ClassificationProperties(CprI), Region); Tree.Left = CART_MakeBinaryTree(TrainingSamples(CplI,:), ClassificationProperties(CplI), Region);function W=CART_PruningBinaryTree(Tree, Samples)% 針對(duì)(zhndu) 由函數(shù) CART_MakeBinaryTree()生成的二叉樹 Tree,按樣本 Samples 遍歷
14、Tree%如果 發(fā)現(xiàn)有與葉子共父節(jié)點(diǎn)的長(zhǎng)枝條,并且其數(shù)量(shling)不多于葉子中的樣本數(shù),則將其父節(jié)點(diǎn)設(shè)為葉子,類別屬性取多數(shù)%由于程序編寫上一時(shí)間沒能用Matlab語(yǔ)言實(shí)現(xiàn)對(duì)二叉樹的修改,所以沒有真實(shí)地修剪樹,但是起到的修剪之后的效果, %遇到葉子時(shí),就可以返回其類別屬性TempLift=Tree.Left;TempRight=Tree.Right;LeftEmpty =isempty(TempLift.Right) & isempty(TempLift.Left);RightEmpty=isempty(TempRight.Right) & isempty(TempRight.Left)
15、;if LeftEmpty & RightEmpty %遇到掛有 兩葉子節(jié)點(diǎn),執(zhí)行剪枝,擇多歸類 if TempLift.Num TempRight.Num W=TempLift.Value; else W=TempRight.Value; end return;elseif LeftEmpty | RightEmpty %遇到掛有 一個(gè)(y )葉子 和 一個(gè)子父節(jié)點(diǎn),比較,擇多歸類 if LeftEmpty & (TempLift.Num TempRight.Num /3) W=TempLift.Value; return; elseif RightEmpty & (TempRight.Nu
16、m TempLift.Num /3) W=TempRight.Value; return; end endif Samples(Tree.Label) Tree.Value if RightEmpty W=Tree.Right.Value; return; else W=CART_PruningBinaryTree(Tree.Right,Samples); endelse if LeftEmpty W=Tree.Left.Value; return; else W=CART_PruningBinaryTree(Tree.Left,Samples); endendfunction W=CART_
17、UseBinaryTree(Tree,Test)% 針對(duì)(zhndu) 由函數(shù) CART_MakeBinaryTree()生成的二叉樹 Tree,給出 Test 類屬 W%遇到葉子時(shí),就可以返回(fnhu)其類別屬性if isempty(Tree.Right) & isempty(Tree.Left) W=Tree.Value; return;endif Test(Tree.Label) Tree.Value W=CART_UseBinaryTree(Tree.Right,Test);else W=CART_UseBinaryTree(Tree.Left,Test); endfunction
18、Tree=CART_MakeAnyTree(TrainingSamples, ClassificationProperties, Region)% 基于 熵不純度(chnd) 增益比不純度 遞歸地實(shí)現(xiàn) 非剪枝完全 2/3/4叉樹%分支數(shù)量動(dòng)態(tài)確定方法:用不純度下降最多的前兩個(gè)維度將樣本劃分為四個(gè)象限,優(yōu)先保證單純的象限(一個(gè)(y )象限的樣本全是同一類)獨(dú)立地做為一分支點(diǎn)(葉子),因此% 如果沒有單純象限,則將四個(gè)象限相鄰(xin ln)組合,取增益比不純度最大的分法% 如果有一個(gè)單純象限,則將此象限固定分為一枝,其它象限相鄰組合,取增益比不純度最大的分法% 如果有二個(gè)單純象限,如果兩個(gè)單純象
19、限不相鄰,則將四個(gè)象限直接分別做為一枝,% 如果相鄰且類別相同,考察二三枝的情況;如果相鄰但類別不同,考察三四枝情況,取增益比不純度最大的分法% 如果有三個(gè)或四個(gè)單純象限,則將四個(gè)象限直接分別做為一枝% 如果有空象限,則該象限按非單純地參與分支組合%輸入?yún)?shù):目標(biāo)數(shù)據(jù)(訓(xùn)練樣本)TrainingSamples n*d、 (特征向量依次放置)% 對(duì)應(yīng)的類別屬性 ClassificationProperties n*1、(取值范圍 1-C) % 特征向量維度順序下上限 Region d*2 (特征值取離散的自然數(shù)區(qū)間,左小右大)%輸出參數(shù):一個(gè)基本樹形節(jié)點(diǎn) Tree % 基本樹形節(jié)點(diǎn)結(jié)構(gòu) %一:標(biāo)
20、簽(1*2 記錄當(dāng)前節(jié)點(diǎn)判定所用的維度,表葉子時(shí)為空);%二:閾值( x,y 記錄當(dāng)前所用維度判定之閾值,葉子節(jié)點(diǎn)時(shí)表類別1*1);%三:一象限枝(sx & sy 的待分目標(biāo) 歸于此,表葉子時(shí)無(wú)此項(xiàng))%四:二象限枝(sy 的待分目標(biāo) 歸于此,表葉子時(shí)無(wú)此項(xiàng))%五:三象限枝(sx & s=y 的待分目標(biāo) 歸于此,表葉子時(shí)無(wú)此項(xiàng))%六:四象限枝(s=x & s m; SumCpI=sum(CpI); if SumCpI = n | SumCpI = 0 %分到一邊去了,不妥,直接考察下一個(gè) continue; end CpI=not(CpI),CpI; EIt=zeros(2,1); %統(tǒng)計(jì)預(yù)計(jì)
21、新分到左右兩枝的類別及相應(yīng)的比率,然后得出熵不純度 for j=1:2 Cpt=ClassificationProperties(CpI(:,j); if ( length(unique(Cpt) = 1) %應(yīng)對(duì) hist() 在處理同一元素時(shí)所存在的異常(ychng)問題 Pw =0; else Pw=hist(Cpt,unique(Cpt); Pw=Pw/length(Cpt); Pw=Pw.*log2(Pw); end EIt(j)=sum(Pw); end Pr=length(Cpt)/n; EI(Iei)=EIt(1) *(1-Pr) + EIt(2) *Pr; end maxEI
22、, p =max(EI); NmaxEI=sum(EI =maxEI); if NmaxEI 1 %如果最大值有多個(gè),取中間那一個(gè), 稍微改進(jìn)了默認(rèn)(mrn)地只取第一個(gè)最大值的缺陷 t=find(EI =maxEI); p=round(NmaxEI /2); p=t(p); end Dvp(k,1)=maxEI; Dvp(k,2)=Region(k,1) +p -1;end %更新節(jié)點(diǎn)標(biāo)簽和閾值,提取 不純度下降(xijing)最多的前兩個(gè)維度maxDv, p=max(Dvp(:,1); NmaxDv=sum(Dvp(:,1) =maxDv); if NmaxDv 1 %如果最大值有多個(gè),采
23、用取值范圍較小的那一個(gè)維度屬性, 稍微改進(jìn)了默認(rèn)地只取第一個(gè)最大值的缺陷 t=find(Dvp(:,1) =maxDv); D,p=min(Region(t,2) -Region(t,1); px=t(p); py=t(1); if px=py py=t(2); end else px=p; Dvp(p,1)=-100; %強(qiáng)行將原來(lái)最大值設(shè)置到最小,以便找出次大的 maxDv, p=max(Dvp(:,1); py=p; end X=Dvp(px,2); Y=Dvp(py,2); Tree.Label = px,py; %公共(gnggng)的 Tree.Value = X, Y;%分 單純
24、度情況(qngkung) 進(jìn)行討論Bx=TrainingSamples(:,px) = X;By=TrainingSamples(:,py) = Y;Sx=not(Bx);Sy=not(By);Sp1=Bx & By;Sp2=Sx & By;Sp3=Sx & Sy;Sp4=Bx & Sy;CP1=ClassificationProperties(Sp1);CP2=ClassificationProperties(Sp2);CP3=ClassificationProperties(Sp3);CP4=ClassificationProperties(Sp4); %兩類分法,只考慮半邊平面的情況(q
25、ngkung),而這 以X軸分為優(yōu),前面已經(jīng)得出,更新為增益比不純度即可 Pr=sum(Bx)/n; E2=-maxDv/(Pr*log2(Pr) +(1-Pr)*log2(1-Pr); %三類分法,有四種 % 1、2象限做為一個(gè)大的,3 4分別做為一枝 CP=CP1, CP2, CP3, CP4; E3=zeros(3,1); for k=0:3 CPt=CP(:,mod(k,4)+1), CP(:,mod(k+1,4)+1); %如果為空 或者 只有一種類別 ,直接認(rèn)為是 純凈的 Pk(1)=length(Cpt); if ( length(unique(Cpt) 2) %應(yīng)對(duì) hist(
26、) 在處理同一元素時(shí)所存在的異常問題 Ebb =0; else Et = hist(CPt,unique(CPt); Et = Et /Pk(1); Ebb = Et.*log2(Et); end CPt=CP(:,mod(k+2,4)+1); Pk(2)=length(Cpt); if ( length(unique(Cpt) 2) %應(yīng)對(duì) hist() 在處理同一(tngy)元素時(shí)所存在的異常問題 Es1 =0; else Et = hist(CPt,unique(CPt); Et = Et /Pk(2); Es1 = Et.*log2(Et); end CPt=CP(:,mod(k+3,
27、4)+1); Pk(3)=length(Cpt); if ( length(unique(Cpt) 2) %應(yīng)對(duì) hist() 在處理同一元素時(shí)所存在(cnzi)的異常問題 Es2 =0; else Et = hist(CPt,unique(CPt); Et = Et /Pk(3); Es2 = Et.*log2(Et); end Pk=Pk/n; Et=sum(Ebb, Es1, Es2.*Pk); Pk=Pk.*log2(Pk); E3(k+1)=-Et/sum(Pk); %增益(zngy)比不純度 end E3,p3=max(E3); %四類分法,有一種 E4=zeros(4,1); f
28、or k=1:4 CPt=CP(:,k); if length(unique(Cpt) 2 E4(k) =0; else Et = hist(CPt,unique(CPt); Et = Et /sum(Et); E4(k) = Et.*log2(Et); end end Pk=length(CP1), length(CP2), length(CP3), length(CP4)/n; E4=-sum(E4.*Pk)/sum(Pk.*log2(Pk); maxDv,p=max(E2, E3, E4); %增益(zngy)比不純度 if p =1 %最終確定(qudng)分為二枝 Tree.Bran
29、ch(1) = CART_MakeAnyTree(TrainingSamples(Sx,:), ClassificationProperties(Sx), Region); Tree.Branch(2) = CART_MakeAnyTree(TrainingSamples(Bx,:), ClassificationProperties(Bx), Region); elseif p=2 % 分為(fn wi)三枝 Tree.State=p3; switch p3 case 1 Tree.Branch(1) = CART_MakeAnyTree(TrainingSamples(Bx,:), Cla
30、ssificationProperties(Bx), Region); Tree.Branch(2) = CART_MakeAnyTree(TrainingSamples(Sp3,:), CP3, Region); Tree.Branch(3) = CART_MakeAnyTree(TrainingSamples(Sp4,:), CP4, Region); case 2 Tree.Branch(1) = CART_MakeAnyTree(TrainingSamples(Sy,:), ClassificationProperties(Sy), Region); Tree.Branch(2) =
31、CART_MakeAnyTree(TrainingSamples(Sp4,:), CP4, Region); Tree.Branch(3) = CART_MakeAnyTree(TrainingSamples(Sp1,:), CP1, Region); case 3 Tree.Branch(1) = CART_MakeAnyTree(TrainingSamples(Sx,:), ClassificationProperties(Sx), Region); Tree.Branch(2) = CART_MakeAnyTree(TrainingSamples(Sp1,:), CP1, Region)
32、; Tree.Branch(3) = CART_MakeAnyTree(TrainingSamples(Sp2,:), CP2, Region); otherwise Tree.Branch(1) = CART_MakeAnyTree(TrainingSamples(By,:), ClassificationProperties(By), Region); Tree.Branch(2) = CART_MakeAnyTree(TrainingSamples(Sp2,:), CP3, Region); Tree.Branch(3) = CART_MakeAnyTree(TrainingSample
33、s(Sp3,:), CP3, Region); end else %分為(fn wi)四枝 Tree.Branch(1) = CART_MakeAnyTree(TrainingSamples(Sp1,:), CP1, Region); Tree.Branch(2) = CART_MakeAnyTree(TrainingSamples(Sp2,:), CP2, Region); Tree.Branch(3) = CART_MakeAnyTree(TrainingSamples(Sp3,:), CP3, Region); Tree.Branch(4) = CART_MakeAnyTree(Trai
34、ningSamples(Sp4,:), CP4, Region); endfunction Tree=CART_MakeMultiTree(TrainingSamples, ClassificationProperties, Region)% 基于 熵不純度 遞歸地實(shí)現(xiàn) 非剪枝(jin zh)完全 多叉樹% 首先(shuxin)基本二分法 提取出較合適的維度, 然后再考察能否在此維度上折成多段,取 增益比不純度 最大的分法%輸入?yún)?shù):目標(biāo)數(shù)據(jù)(訓(xùn)練樣本)TrainingSamples n*d、 (特征向量依次放置)% 對(duì)應(yīng)的類別屬性 ClassificationProperties n*1、(
35、取值范圍 1-C) % 特征向量維度順序下上限 Region d*2 (特征值取離散的自然數(shù)區(qū)間,左小右大)%輸出參數(shù):一個(gè)基本樹形節(jié)點(diǎn) Tree % 基本樹形節(jié)點(diǎn)結(jié)構(gòu) %一:標(biāo)簽(記錄當(dāng)前節(jié)點(diǎn)判定所用的維度,表葉子時(shí)為空);%二:閾值(記錄當(dāng)前所用維度判定之閾值,葉子節(jié)點(diǎn)時(shí)表類別);%三:左枝(小于等于閾值的待分目標(biāo) 歸于此,表葉子時(shí)為空)%四:右枝(大于閾值的 歸于此,表葉子時(shí)為空)%檢查類別屬性是否(sh fu)單純,如果只有一個(gè)屬性,那么則是葉子,否則需要繼續(xù)分if ( length(unique(ClassificationProperties) = 1) Tree.Branch =
36、 ; Tree.Label = ; Tree.Value = ClassificationProperties(1); return;end%如果(rgu)剩下的樣本數(shù) 為類別數(shù) 直接設(shè)置為葉子 差異最大維度做為查詢項(xiàng)目%單獨(dú)處理此類情況,做為一種優(yōu)化方法應(yīng)對(duì) 后面提到(t do)的缺陷Nc=length(unique(ClassificationProperties);if length(ClassificationProperties) = Nc m,p=max(max(TrainingSamples) -min(TrainingSamples); Tree.Label = p; if N
37、c m; SumCpI=sum(CpI); if SumCpI = n | SumCpI = 0 %分到一邊去了,不妥,直接考察下一個(gè) continue; end CpI=not(CpI),CpI; EIt=zeros(2,1); %統(tǒng)計(jì)預(yù)計(jì) 新分到左右兩枝的類別及相應(yīng)的比率,然后得出熵不純度 for j=1:2 Cpt=ClassificationProperties(CpI(:,j); if ( length(unique(Cpt) = 1) %應(yīng)對(duì) hist() 在處理同一元素時(shí)所存在的異常問題 Pw =0; else Pw=hist(Cpt,unique(Cpt); Pw=Pw/len
38、gth(Cpt); Pw=Pw.*log2(Pw); end EIt(j)=sum(Pw); end Pr=length(Cpt)/n; EI(Iei)=EIt(1) *(1-Pr) + EIt(2) *Pr; end maxEI, p =max(EI); NmaxEI=sum(EI =maxEI); if NmaxEI 1 %如果最大值有多個(gè),取中間那一個(gè), 稍微改進(jìn)了默認(rèn)地只取第一個(gè)最大值的缺陷 t=find(EI =maxEI); p=round(NmaxEI /2); p=t(p); end Dvp(k,1)=maxEI; Dvp(k,2)=Region(k,1) +p -1;end
39、%更新節(jié)點(diǎn)標(biāo)簽(bioqin)和閾值maxDv, p=max(Dvp(:,1); NmaxDv=sum(Dvp(:,1) =maxDv); if NmaxDv 1 %如果最大值有多個(gè),采用取值范圍較小的那一個(gè)維度屬性, 稍微改進(jìn)了默認(rèn)(mrn)地只取第一個(gè)最大值的缺陷 t=find(Dvp(:,1) =maxDv); D,p=min(Region(t,2) -Region(t,1); p=t(p); end Tree.Label = p; %采用(ciyng)的維度 RegionN=Region(p,2) -Region(p,1) +1; switch RegionN case 2 %兩個(gè)離散
40、區(qū)分度,只能分為兩枝 Tree.Value = Dvp(p,2); CprI=TrainingSamples(:,p) Dvp(p,2); CplI=not(CprI); Tree.Branch(1) = CART_MakeMultiTree(TrainingSamples(CplI,:), ClassificationProperties(CplI), Region); Tree.Branch(2) = CART_MakeMultiTree(TrainingSamples(CprI,:), ClassificationProperties(CprI), Region); case 3 %三個(gè)
41、離散區(qū)分度,只需考察分為三枝時(shí)是否更優(yōu) Cp1=TrainingSamples(:,p) = Region(p,1); Cp2=TrainingSamples(:,p) = (Region(p,1)+1); Cp3=TrainingSamples(:,p) = Region(p,2); if isempty(Cp1) | isempty(Cp2) | isempty(Cp3) %如果有一枝為空,那么直接按兩枝來(lái)分 Tree.Value = Dvp(p,2); CprI=TrainingSamples(:,p) Dvp(p,2); CplI=not(CprI); Tree.Branch(1) =
42、 CART_MakeMultiTree(TrainingSamples(CplI,:), ClassificationProperties(CplI), Region); Tree.Branch(2) = CART_MakeMultiTree(TrainingSamples(CprI,:), ClassificationProperties(CprI), Region); else Cpt =Cp1; if ( length(unique(Cpt) 2) %應(yīng)對(duì) hist() 在處理同一元素時(shí)所存在的異常(ychng)問題 EI1 =0; else Et = hist(CPt,unique(C
43、Pt); Et = Et /sum(Et); EI1 = Et.*log2(Et); end Cpt =Cp2; if ( length(unique(Cpt) 2) %應(yīng)對(duì) hist() 在處理同一(tngy)元素時(shí)所存在的異常問題 EI2 =0; else Et = hist(CPt,unique(CPt); Et = Et /sum(Et); EI2 = Et.*log2(Et); end Cpt =Cp3; if ( length(unique(Cpt) Dvp(p,2); Pk=n-Pk,Pk/n; E2=-maxDv/sum(Pk.*log2(Pk); if E3 E2 Tree.
44、Value = Region(p,1), Region(p,1) +1; Tree.Branch(1) = CART_MakeMultiTree(TrainingSamples(Cp1,:), ClassificationProperties(Cp1), Region); Tree.Branch(2) = CART_MakeMultiTree(TrainingSamples(Cp2,:), ClassificationProperties(Cp2), Region); Tree.Branch(3) = CART_MakeMultiTree(TrainingSamples(Cp3,:), ClassificationProperties(Cp3), Region); else Tree.Value = Dvp(p,2); CprI=TrainingSamples(:,p) Dvp(p,2); CplI=not(CprI); Tree.Branch(1) = CART_MakeMultiTree(TrainingSamples(CplI,:), ClassificationProperties(CplI), Region); Tree.Branch(
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南醫(yī)學(xué)院《園藝學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘肅中醫(yī)藥大學(xué)《種子檢驗(yàn)技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《港口起重機(jī)械說(shuō)》課件
- 小學(xué)生課件模板圖片
- 安全取暖主題班會(huì)課件
- 七年級(jí)道德與法治上冊(cè)第四單元生命的思考第八課探問生命第1框生命可以永恒嗎說(shuō)課稿新人教版
- 小學(xué)生觀看黨的課件
- 三年級(jí)科學(xué)上冊(cè)第三單元天氣與我們的生活第十五課一周的天氣教案青島版
- 礦區(qū)消防安全課件
- 校園課件安全事故
- 軍事理論智慧樹知到期末考試答案2024年
- 2024年貴州貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 《混凝土的檢測(cè)》課件
- 衛(wèi)生健康系統(tǒng)2024年安全生產(chǎn)和消防工作要點(diǎn)
- CNC數(shù)控編程述職報(bào)告
- 生產(chǎn)車間環(huán)境改善方案
- 2024年高考物理真題分類匯編(全一本附答案)
- 2024-2025年上海中考英語(yǔ)真題及答案解析
- 新疆喀什地區(qū)巴楚縣2023-2024學(xué)年九年級(jí)上學(xué)期1月期末化學(xué)試題
- 供應(yīng)商可持續(xù)發(fā)展計(jì)劃
- 《吉利集團(tuán)財(cái)務(wù)共享中心的優(yōu)化研究》11000字
評(píng)論
0/150
提交評(píng)論