集成学习python实现
时间: 2023-09-01 07:12:51 浏览: 122
集成学习(Ensemble Learning)是指将多个分类器(或回归器)的输出进行组合,以获得比单个分类器更好的性能的机器学习技术。Python中有很多实现集成学习的库,例如Scikit-learn和XGBoost。
下面是一个使用Scikit-learn实现集成学习的例子:
```python
from sklearn.ensemble import VotingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 生成数据
X, y = make_classification(n_samples=1000, n_features=10, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义三个基分类器
clf1 = DecisionTreeClassifier(max_depth=4)
clf2 = LogisticRegression(random_state=42)
clf3 = SVC(kernel='rbf', probability=True)
# 定义投票分类器
voting_clf = VotingClassifier(estimators=[('dt', clf1), ('lr', clf2), ('svc', clf3)], voting='soft')
# 训练并预测
voting_clf.fit(X_train, y_train)
y_pred = voting_clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
在上面的代码中,我们使用了三个基分类器(决策树、逻辑回归、支持向量机),并使用投票分类器将它们结合起来。投票分类器的voting参数指定了投票方式,可以是hard或soft。hard表示取多数票,soft表示取概率加权平均值。在本例中,我们使用了soft投票方式。
集成学习可以提高模型的泛化能力,降低过拟合风险,因此在实际应用中被广泛使用。
阅读全文