快速入门Python机器学习(24)

简介: 快速入门Python机器学习(24)

10.3 装袋算法(Bagging)


10.3.1 原理

Bagging算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。最初由Leo Breiman于1994年提出。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。m个样本原始数据进行n次抽样(n<=m)


  1. 形成一个构成n个样本的新的训练数据集的训练模型
  2. 重复T次,得到T个模型
  3. 有新样本进行预测,采用投票方式(分类问题)或求平均值方式(回归问题)得到新样本的预测结果


Sklearn中BaggingClassifier和BaggingRegressor分类和回归树算法。

特点

  • 平行合奏:每个模型独立构建
  • 旨在减少方差,而不是偏差
  • 适用于高方差低偏差模型(复杂模型)
  • 基于树的方法的示例是随机森林,其开发完全生长的树(注意,RF修改生长的过程以减少树之间的相关性)


10.3.1 Bagging Classifier

类参数、属性和方法


class sklearn.ensemble.BaggingClassifier(base_estimator=None, n_estimators=10, *, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, oob_score=False, warm_start=False, n_jobs=None, random_state=None, verbose=0)


属性

属性

类型

解释

base_estimator_

estimator

从中生成集合的基估计量。

n_features_

int

执行拟合时的特征数。

estimators_

list of estimators

拟合基估计量的集合。

estimators_samples_

list of arrays

每个基估计量的抽样子集。

estimators_features_

list of arrays

每个基估计量的特征子集。

classes_

ndarray of shape (n_classes,)

类标签。

n_classes_

int or list

类的数量。

oob_score_

float

使用现成的估计值获得的训练数据集的得分。只有当oob_scoreTrue时,此属性才存在。

oob_decision_function_

ndarray of shape (n_samples, n_classes)

利用训练集上的包外估计计算决策函数。如果nèu估计量很小,则可能在引导过程中从未遗漏数据点。在这种情况下,oob_decision_function_可能包含NaN。只有当oob_scoreTrue时,此属性才存在。


方法

decision_function(X)

基本分类器的决策函数的平均值。

fit(X, y[, sample_weight])

从训练中建立一个估计量的Bagging集合

get_params([deep])

获取此估计器的参数。

predict(X)

预测X的类。

predict_log_proba(X)

预测X的类对数概率。

predict_proba(X)

预测X的类概率。

score(X, y[, sample_weight])

返回给定测试数据和标签的平均精度。

set_params(**params)

设置此估计器的参数。


装袋分类算法算法分析鸢尾花数据

def iris_of_BaggingClassifier():
       myutil = util()
       X,y = datasets.load_iris().data,datasets.load_iris().target
       X1 = datasets.load_iris().data[:,:2]
       X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
       title = "BaggingClassifier鸢尾花数据"
       clf = AdaBoostClassifier(n_estimators=50,random_state=11)
       clf.fit(X_train, y_train)
       myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(AdaBoostClassifier(n_estimators=50,random_state=11),X,y,title)
       myutil.show_pic(title)
       clf = AdaBoostClassifier(n_estimators=50,random_state=11).fit(X1,y)
       myutil.draw_scatter_for_clf(X1,y,clf,title)


输出

BaggingClassifier鸢尾花数据:
95.83%
BaggingClassifier鸢尾花数据:
96.67%

image.png


装袋分类算法算法分析红酒数据

def wine_of_BaggingClassifier():
       myutil = util()
       X,y = datasets.load_wine().data,datasets.load_wine().target
       X1 = datasets.load_wine().data[:,:2]
       X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
       title = "BaggingClassifier红酒数据"
       clf = AdaBoostClassifier(n_estimators=50,random_state=11)
       clf.fit(X_train, y_train)
       myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(AdaBoostClassifier(n_estimators=50,random_state=11),X,y,title)
       myutil.show_pic(title)
       clf = AdaBoostClassifier(n_estimators=50,random_state=11).fit(X1,y)
       myutil.draw_scatter_for_clf(X1,y,clf,title)


输出

BaggingClassifier红酒数据:
95.77%
BaggingClassifier红酒数据:
100.00%

image.png


装袋分类算法分析乳腺癌数据

def breast_cancer_of_BaggingClassifier():
       myutil = util()
       X,y = datasets.load_breast_cancer().data,datasets.load_breast_cancer().target
       X1 = datasets.load_breast_cancer().data[:,:2]
       X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
       title = "BaggingClassifier乳腺癌数据"
       clf = BaggingClassifier(base_estimator=SVC(),n_estimators=10, random_state=4)
       clf.fit(X_train, y_train)
       myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(AdaBoostClassifier(n_estimators=50,random_state=11),X,y,title)
       myutil.show_pic(title)
       clf = AdaBoostClassifier(n_estimators=50,random_state=11).fit(X1,y)
       myutil.draw_scatter_for_clf(X1,y,clf,title)


输出

BaggingClassifier乳腺癌数据:
91.87%
BaggingClassifier乳腺癌数据:
91.23%

image.png

目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据科学实战:从Pandas到机器学习
Python数据科学实战:从Pandas到机器学习
|
3月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
179 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
3月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
88 2
|
3月前
|
机器学习/深度学习 数据可视化 数据处理
掌握Python数据科学基础——从数据处理到机器学习
掌握Python数据科学基础——从数据处理到机器学习
69 0
|
3月前
|
机器学习/深度学习 数据采集 人工智能
机器学习入门:Python与scikit-learn实战
机器学习入门:Python与scikit-learn实战
107 0
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
Python在数据科学中的应用:从数据处理到模型训练
Python在数据科学中的应用:从数据处理到模型训练
|
3月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
196 6
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
276 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
解锁机器学习的新维度:元学习的算法与应用探秘
元学习作为一个重要的研究领域,正逐渐在多个应用领域展现其潜力。通过理解和应用元学习的基本算法,研究者可以更好地解决在样本不足或任务快速变化的情况下的学习问题。随着研究的深入,元学习有望在人工智能的未来发展中发挥更大的作用。
|
1月前
|
机器学习/深度学习 算法 网络安全
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
53 14

热门文章

最新文章

推荐镜像

更多