(十五、)bagging算法

一、bagging、

首先bagging算法是集成学习中两大类算法中的其中一个代表算法,还有另一类的经典算法是Xgboost。他们主要的区别是前者学习器之间不存在依赖关系和可以并行生成学习器,后者学习器之间存在强依赖关系和可以串行生成学习器。
bagging算法:(1)bagging算法可以解决回归问题和分类问题。(2)它从原始数据中随机抽取n个样本,重复s次,于是就有个s个训练集,每个训练集都可以训练出一个弱分类器,最终生成s个弱分类器,预测结果将有这些分类器投票决定(选择分类器投票结果中最多的类别作为最后预测结果)。代表的有随机森林。

二、代码实现

import numpy as np

from sklearn.neighbors import KNeighborsClassifier

from sklearn.ensemble import BaggingClassifier

from sklearn import datasets

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LogisticRegression

from sklearn.tree import DecisionTreeClassifier
X,y = datasets.load_wine(True)
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 10244021)
# 一个算法,准确率 71%
knn = KNeighborsClassifier()
knn.fit(X_train,y_train)
knn.score(X_test,y_test)
0.7111111111111111
# 100个算法,集成算法,准确提升到了77.7%
knn = KNeighborsClassifier()
# bag中100个knn算法
bag = BaggingClassifier(base_estimator=knn,n_estimators=100,max_samples=0.8,max_features=0.7)
bag.fit(X_train,y_train)
bag.score(X_test,y_test)
0.7777777777777778
import warnings
warnings.filterwarnings('ignore')
lr = LogisticRegression()
lr.fit(X_train,y_train)
lr.score(X_test,y_test)
0.9555555555555556
bag = BaggingClassifier(base_estimator=LogisticRegression(),n_estimators=100,
                        max_samples=0.7,max_features=0.5)
bag.fit(X_train,y_train)
bag.score(X_test,y_test)
0.9555555555555556
clf = DecisionTreeClassifier()
clf.fit(X_train,y_train)
clf.score(X_test,y_test)
0.9333333333333333
bag = BaggingClassifier(base_estimator=DecisionTreeClassifier(),n_estimators=100,
                        max_samples=1.0,max_features=0.5)
bag.fit(X_train,y_train)
bag.score(X_test,y_test)
0.9777777777777777
import matplotlib.pyplot as plt
from sklearn import tree
plt.figure(figsize=(9,9))
_ = tree.plot_tree(bag[0],filled=True)
output_10_0.png
plt.figure(figsize=(9,9))
_ = tree.plot_tree(bag[1],filled=True)
output_11_0.png
X_train.shape
(133, 13)
133*0.7
93.1
32+36+25
93
plt.figure(figsize=(9,9))
_ = tree.plot_tree(bag[2],filled=True)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-1-b56635e6beeb> in <module>
----> 1 plt.figure(figsize=(9,9))
      2 _ = tree.plot_tree(bag[2],filled=True)


NameError: name 'plt' is not defined
pd.describe()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值