adaboost算法代码
时间: 2023-08-11 12:07:58 浏览: 72
以下是一个简单的Adaboost算法的Python实现代码:
```python
import numpy as np
class Adaboost:
def __init__(self, n_estimators=50):
self.n_estimators = n_estimators
self.estimators = []
self.alphas = []
def fit(self, X, y):
n_samples, n_features = X.shape
w = np.ones(n_samples) / n_samples
for i in range(self.n_estimators):
h = DecisionTreeClassifier(max_depth=1)
h.fit(X, y, sample_weight=w)
y_pred = h.predict(X)
err = w.dot(y != y_pred)
alpha = 0.5 * np.log((1 - err) / err)
w = w * np.exp(-alpha * y * y_pred)
w = w / np.sum(w)
self.estimators.append(h)
self.alphas.append(alpha)
def predict(self, X):
y_pred = np.zeros(len(X))
for alpha, h in zip(self.alphas, self.estimators):
y_pred += alpha * h.predict(X)
return np.sign(y_pred)
```
其中,Adaboost类的构造函数中的n_estimators参数表示需要多少个基分类器,默认为50个。fit方法中的X和y分别表示输入数据和标签。这里基分类器使用的是决策树分类器,最大深度限制为1。在训练过程中,根据当前的样本权重,训练一个基分类器,并计算出误差err和该分类器的权重alpha。然后根据alpha和预测结果更新样本权重,最后将该分类器和alpha存储在模型中。predict方法中,根据存储的基分类器和alpha,对输入数据进行预测。
阅读全文