bagging算法代码
时间: 2023-10-21 10:05:40 浏览: 131
以下是一个简单的 Bagging 算法的 Python 代码实现:
```python
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.utils import resample
class BaggingClassifier:
def __init__(self, n_estimators=10, max_samples=1.0, max_features=1.0):
self.n_estimators = n_estimators # 子分类器数量
self.max_samples = max_samples # 每个子分类器的样本数比例
self.max_features = max_features # 每个子分类器的特征数比例
self.estimators_ = [] # 子分类器集合
def fit(self, X, y):
n_samples, n_features = X.shape
n_sub_samples = int(self.max_samples * n_samples)
n_sub_features = int(self.max_features * n_features)
for i in range(self.n_estimators):
X_sub, y_sub = resample(X, y, n_samples=n_sub_samples)
estimator = DecisionTreeClassifier(max_features=n_sub_features)
estimator.fit(X_sub, y_sub)
self.estimators_.append(estimator)
def predict(self, X):
y_pred = np.zeros((X.shape[0], len(self.estimators_)))
for i, estimator in enumerate(self.estimators_):
y_pred[:, i] = estimator.predict(X)
return np.mean(y_pred, axis=1).astype(int)
```
该代码实现了一个 Bagging 分类器,使用决策树作为子分类器。在 `fit` 方法中,首先对数据进行随机采样,然后使用决策树拟合数据。在 `predict` 方法中,对所有子分类器的预测结果取平均值作为最终预测结果。
阅读全文