摘要:即某個(gè)數(shù)據(jù)被分為哪一類要由各分類器權(quán)值決定。實(shí)現(xiàn)參考西瓜書及機(jī)器學(xué)習(xí)實(shí)戰(zhàn)實(shí)現(xiàn)初始化權(quán)重,每個(gè)都一樣唯一的入?yún)⑹堑螖?shù),要么為跳出循環(huán),要么循環(huán)次數(shù)達(dá)到的時(shí)候跳出循環(huán)決策樹樁算法,也可以換成其他的算法計(jì)算值重新計(jì)算權(quán)重
1.介紹
Adaboost是一種迭代算法,其核心思想是針對同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構(gòu)成一個(gè)更強(qiáng)的最終分類器(強(qiáng)分類器)
2.算法邏輯
1、先通過對N個(gè)訓(xùn)練樣本的學(xué)習(xí)得到第一個(gè)弱分類器; 2、將分錯(cuò)的樣本和其他的新數(shù)據(jù)一起構(gòu)成一個(gè)新的N個(gè)的訓(xùn)練樣本,通過對這個(gè)樣本的學(xué)習(xí)得到第二個(gè)弱分類器; 3、將1和2都分錯(cuò)了的樣本加上其他的新樣本構(gòu)成另一個(gè)新的N個(gè)的訓(xùn)練樣本,通過對這個(gè)樣本的學(xué)習(xí)得到第三個(gè)弱分類器 4、最終經(jīng)過提升的強(qiáng)分類器。即某個(gè)數(shù)據(jù)被分為哪一類要由各分類器權(quán)值決定。
3.實(shí)現(xiàn)(參考西瓜書及機(jī)器學(xué)習(xí)實(shí)戰(zhàn))
#adaBoost實(shí)現(xiàn) def adaBoostTrain(dataArr,classLabels,numIt=40): weakClassArr = [] m = np.shape(dataArr)[0] D = np.mat(np.ones((m,1))/m) #初始化權(quán)重,每個(gè)feature都一樣 aggClassEst = np.mat(np.zeros((m,1))) #唯一的入?yún)⑹堑螖?shù),要么error為 0跳出循環(huán) ,要么循環(huán)次數(shù)達(dá)到numIt 的時(shí)候跳出循環(huán) for i in range(numIt): # 決策樹樁算法,也可以換成其他的算法 bestStump,error,classEst = buildStump(dataArr,classLabels,D) #print "D:",D.T alpha = float(0.5*np.log((1.0-error)/max(error,1e-16)))#計(jì)算alpha值 bestStump["alpha"] = alpha weakClassArr.append(bestStump) #print "classEst: ",classEst.T #重新計(jì)算權(quán)重 expon = np.multiply(-1*alpha*np.mat(classLabels).T,classEst) D = np.multiply(D,np.exp(expon)) D = D/D.sum() aggClassEst += alpha*classEst aggErrors = np.multiply(np.sign(aggClassEst) != np.mat(classLabels).T,np.ones((m,1))) errorRate = aggErrors.sum()/m print "total error: ",errorRate if errorRate == 0.0: break print "weakClassArr:",weakClassArr print "aggClassEst:", aggClassEst return weakClassArr,aggClassEst
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19775.html
摘要:本篇內(nèi)容為機(jī)器學(xué)習(xí)實(shí)戰(zhàn)第章利用元算法提高分類性能程序清單。將當(dāng)前錯(cuò)誤率與已有的最小錯(cuò)誤率進(jìn)行對比后,如果當(dāng)前的值較小,那么就在字典中保存該單層決策樹。上述,我們已經(jīng)構(gòu)建了單層決策樹,得到了弱學(xué)習(xí)器。 本篇內(nèi)容為《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》第 7 章利用 AdaBoost 元算法提高分類性能程序清單。所用代碼為 python3。 AdaBoost優(yōu)點(diǎn):泛化錯(cuò)誤率低,易編碼,可以應(yīng)用在大部分分類器上...
摘要:在本次課程中,著重講解的是傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)及各種算法。回歸對連續(xù)型數(shù)據(jù)進(jìn)行預(yù)測趨勢預(yù)測等除了分類之外,數(shù)據(jù)挖掘技術(shù)和機(jī)器學(xué)習(xí)技術(shù)還有一個(gè)非常經(jīng)典的場景回歸。 摘要: 什么是數(shù)據(jù)挖掘?什么是機(jī)器學(xué)習(xí)?又如何進(jìn)行Python數(shù)據(jù)預(yù)處理?本文將帶領(lǐng)大家一同了解數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技術(shù),通過淘寶商品案例進(jìn)行數(shù)據(jù)預(yù)處理實(shí)戰(zhàn),通過鳶尾花案例介紹各種分類算法。 課程主講簡介:韋瑋,企業(yè)家,資深I(lǐng)T領(lǐng)...
摘要:在本次課程中,著重講解的是傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)及各種算法?;貧w對連續(xù)型數(shù)據(jù)進(jìn)行預(yù)測趨勢預(yù)測等除了分類之外,數(shù)據(jù)挖掘技術(shù)和機(jī)器學(xué)習(xí)技術(shù)還有一個(gè)非常經(jīng)典的場景回歸。 摘要: 什么是數(shù)據(jù)挖掘?什么是機(jī)器學(xué)習(xí)?又如何進(jìn)行Python數(shù)據(jù)預(yù)處理?本文將帶領(lǐng)大家一同了解數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技術(shù),通過淘寶商品案例進(jìn)行數(shù)據(jù)預(yù)處理實(shí)戰(zhàn),通過鳶尾花案例介紹各種分類算法。 課程主講簡介:韋瑋,企業(yè)家,資深I(lǐng)T領(lǐng)...
閱讀 1269·2021-11-19 09:40
閱讀 3128·2021-11-02 14:47
閱讀 3101·2021-10-11 10:58
閱讀 3224·2019-08-30 15:54
閱讀 2678·2019-08-30 12:50
閱讀 1732·2019-08-29 16:54
閱讀 473·2019-08-29 15:38
閱讀 1243·2019-08-29 15:19