AdaBoost 演算法簡單實現

2021-10-09 00:08:41 字數 1171 閱讀 8641

演算法基本原理如下:

第1行初始化樣本權重,m表示樣本總數。

第2到11行表示的是每一輪訓練過程,t表示當前訓練的輪數,t表示總的訓練輪數

第4行計算訓練誤差

第5行計算當前基礎模型的組合係數

第6到8行更新樣本權重

其中,data就是輸入的訓練資料,dt則是第t個基礎模型對應的訓練樣本的權重。這裡定義的基礎模型非常簡單,即找到乙個閾值,以該閾值為分類邊界進行分類。

import numpy as np

import matplotlib.pyplot as plt

# 基函式

def base_model(data,dt):

m=data.shape[0]

pred=

pos,mark,min_err=0,0,np.inf

for j in range(m):

pred_temp=

left_sum=np.sum(data[:j,1])

right_sum=np.sum(data[j:,1])

if left_sumbase[0][0]:

res-=base[0][1]*alpha_

else:

res+=base[0][1]*alpha_

return pred_

data=np.array([[0,1],[1,1],[2,1],[3,-1],[4,-1],[5,-1]

,[6,1],[7,1],[8,1],[9,-1]],dtype=np.float32)

plt.scatter(data[:,0],data[:,1],c=data[:,1],cmap=plt.cm.paired)

plt.xlabel('x')

plt.ylabel('y')

plt.show()

models=adaboost(data)

x=data

y=data[:,1]

y_pred=adaboost_predict(models,x)

acc=np.sum(1*(y==y_pred))/float(len(x))

print(acc)

AdaBoost演算法的簡單例子

i 重複地從乙個樣本集合d中取樣n個樣本 ii 針對每次取樣的子樣本集,進行統計學習,獲得假設hi iii 將若干個假設進行組合,形成最終的假設hfinal iv 將最終的假設用於具體的分類任務 2 bagging演算法主要思路 i 訓練分類器 從整體樣本集合中,抽樣n ii 分類器進行投票,最終的...

adaboost 簡單介紹

include include include include include using std vector using namespace std define fcount 100 特徵數 define ccount 30 弱分類器個數 define pcount 200 正樣本數 defi...

AdaBoost演算法原理

每個haar特徵對應看乙個弱分類器,但並不是任伺乙個haar特徵都能較好的描述人臉灰度分布的某一特點,如何從大量的haar特徵中挑選出最優的haar特徵並製作成分類器用於人臉檢測,這是adaboost演算法訓練過程所要解決的關鍵問題。paul viola和michael jones於2001年將ad...