python实现bagging算法
时间: 2023-10-20 19:07:12 浏览: 90
Bagging算法是一种集成学习方法,它通过对训练集进行有放回的随机抽样,然后分别基于每个子集训练不同的分类器,最后将这些分类器的结果进行投票或平均得到最终的分类结果。下面是一个简单的Python实现。
首先,我们需要定义一个函数来进行有放回的随机抽样:
```
import random
def bootstrap_sample(data):
return [random.choice(data) for _ in data]
```
然后,我们可以定义一个函数来训练一个基分类器:
```
from sklearn.tree import DecisionTreeClassifier
def train_base_classifier(data):
X, y = zip(*data)
clf = DecisionTreeClassifier()
clf.fit(X, y)
return clf
```
接下来,我们可以定义一个函数来生成多个子集并训练多个基分类器:
```
def train_bagging(data, n_classifiers):
subsets = [bootstrap_sample(data) for _ in range(n_classifiers)]
classifiers = [train_base_classifier(subset) for subset in subsets]
return classifiers
```
最后,我们可以定义一个函数来对测试数据进行分类:
```
def predict_bagging(classifiers, x):
predictions = [clf.predict([x])[0] for clf in classifiers]
return max(set(predictions), key=predictions.count)
```
使用这些函数,我们可以对一个简单的数据集进行分类:
```
data = [([1,2], 1), ([2,3], 1), ([3,4], -1), ([4,5], -1)]
classifiers = train_bagging(data, 5)
print(predict_bagging(classifiers, [1,2]))
```
输出结果应该为1,表示模型将[1,2]归为正类。
阅读全文