Adaboost模型的python实现

news2024/12/25 21:06:26

文章目录

  • 介绍
    • Adaboost库参数介绍
  • 实例
    • 二分类问题
    • 多分类问题

作者:李雪茸

介绍

Adaboost算法是一种集成学习(ensemble learning)方法。在集成学习中,强学习器指的是由多个机器学习模型组合形成的精度更高的模型。而参与组合的模型就被称为是弱学习器。进行预测时使用的是这些弱学习器的联合模型。训练时需要用训练样本依次训练这些弱学习器。 典型的集成学习算法是随机森林和boosting算法,Adaboost算法是boosting算法的一种实现版本。

Adaboost库参数介绍

Adaboost库分为AdaBoostClassifier(分类)和AdaBoostRegressor(回归),两者的参数相近,均包括Adaboost框架参数和弱学习器参数

1、框架参数

① base_estimator: 弱学习器,常用的一般是CART决策树或者神经网络MLP。

② n_estimators: 弱学习器数量,一般来说n_estimators太小,容易欠拟合,n_estimators太大,又容易过拟合,一般选择一个适中的数值。默认是50

③ learning_rate:弱学习器的权重缩减系数,取值范围为0~1。

④ algorithm:分类算法,AdaBoostClassifier才有,可选SAMME和SAMME.R。两者的区别是弱学习器权重的度量,SAMME使用分类器的分类效果作为弱学习器权重,而SAMME.R使用了对样本集分类的预测概率大小来作为弱学习器权重。

2、弱分类器参数

弱分类器参数要根据所选弱分类器而定,一般使用CART决策树,参数如下:

① criterion: 特征选取方法,分类是gini(基尼系数),entropy(信息增益),通常选择gini,即CART算法,如果选择后者,则是ID3和C4.5

② splitter: 特征划分点选择方法,可以是best或random,前者是在特征的全部划分点中找到最优的划分点,后者是在随机选择的部分划分点找到局部最优的划分点

③ max_depth: 树的最大深度,一般取10~100

④ min_samples_split:节点再划分所需最少样本数,如果节点上的样本数已经低于这个值,则不会再寻找最优的划分点进行划分,且以结点作为叶子节点,默认是2,如果样本过多的情况下,可以设定一个阈值

⑤ min_samples_leaf: 叶子节点所需最少样本数,如果达不到这个阈值,则同一父节点的所有叶子节点均被剪枝,这是一个防止过拟合的参数

⑥ min_weight_fraction_leaf: 叶子节点所有样本权重和,如果低于阈值,则会和兄弟节点一起被剪枝,默认是0,就是不考虑权重问题。

⑦ max_features: 划分考虑最大特征数,不输入则默认全部特征

⑧ max_leaf_nodes:最大叶子节点数,防止过拟合,默认不限制

实例

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import LinearSVC 
from sklearn import metrics
from sklearn.metrics import roc_auc_score
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

二分类问题

##导入数据
cancer = load_breast_cancer()
x = cancer.data
y = cancer.target
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.333, random_state=0)  # 分训练集和验证集
# Adaboost分类器,使用svm为弱分类器
model = AdaBoostClassifier(LinearSVC(C=1),n_estimators=40,learning_rate=0.9,algorithm='SAMME')###使用SVM弱分类器
model.fit(x_train, y_train)
# 对测试集进行预测
y_pred = model.predict(x_test)
predictions = [round(value) for value in y_pred]
#计算准确率
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
print(f"\nAdaboost模型混淆矩阵为:\n{metrics.confusion_matrix(y_test,y_pred)}")

####绘制ROC曲线
fpr,tpr,threshold = roc_curve(y_test,y_pred)  ###计算ROC曲线,即真阳率、假阳率
roc_auc = auc(fpr, tpr)  ###计算auc值
lw = 2
plt.figure(figsize=(8, 5))
plt.plot(fpr, tpr, color='darkorange',
lw=lw, label='ROC curve (area = %0.2f)' % roc_auc) 
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Adaboost ROC')
plt.legend(loc="lower right")
plt.show()
print(f"\nAdaboost模型AUC值为:\n{roc_auc_score(y_test,y_pred)}")

在这里插入图片描述
在这里插入图片描述

多分类问题

###多分类
# 加载样本数据集
iris = load_iris()
X,y = iris.data,iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=12343)
 
model = AdaBoostClassifier(DecisionTreeClassifier(max_depth=5),n_estimators=40)
model.fit(X_train,y_train)
 
# 对测试集进行预测
y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
#计算准确率
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
print(f"\nAdaboost模型混淆矩阵为:\n{metrics.confusion_matrix(y_test,y_pred)}")

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据治理:数据治理之道-数据战略

参考《一本书讲透数据治理》、《数据治理》等 文章目录数据战略定义DAMA对数据战略的定义DCMM对数据战略的定义《一本书讲透数据治理》对数据战略理解数据战略与企业战略、数据架构的关系数据战略的3个要素战略定位短期目标中期目标长期目标实施策略行动计划实施数据战略的5个步…

NFT存储使用NFTUp上传(NFT.Storage)

文章目录NFT存储使用NFTUp上传(NFT.Storage)NFT.StorageNFTUp安装和使用NFT存储使用NFTUp上传(NFT.Storage) NFT.Storage 官网:https://nft.storage/ NFT.Storage,它可以让用户免费使用IPFS与Filecoin存储NFT及元数据内容。 NFT.Storage,…

信息系统业务安全服务资质

信息系统业务安全服务能力评定是指依据《信息化建设企业信息系统业务安全服务能力评定标准》,对信息化建设企业信息系统业务安全服务能力的符合性评价,包括综合条件、财务状况、业绩要求、管理能力、技术实力、人才保障六个方面。通过评定,可…

小黑正在苦于hbase的rowkey的日常积累:md5字符串加密

import hashlib content hello md5hash hashlib.md5(content.encode(utf-8)) md5 md5hash.hexdigest() print(md5)5d41402abc4b2a76b9719d911017c592 参考链接: https://wenku.baidu.com/view/bceba829f22d2af90242a8956bec0975f465a46c?frsogou&wkts167237…

电脑为什么这么卡?6个方法处理电脑卡顿

你是否打开电脑就卡到不行?电脑的开机速度慢,就连打开网页也在转圈圈,一直加载不出来。世界上最痛苦的事莫过于此,想要好好工作,却一直加载不出网页。你知道电脑为什么这么卡吗?其实大多数的原因都在这篇文…

借助 Material Design,帮助您打造更好的无障碍应用 (下篇)

随着时代的发展,"无障碍体验" 对开发者的意义也愈发重大,在上一篇文章中,我们为您介绍了无障碍布局和排版、文案等相关内容。本文将进一步为您介绍图片、声音和运动、实现无障碍的内容。图片图片类型要知道何时以及如何使图片遵循无…

多维尺度MDS案例分析

多维尺度(multidimensional scaling, MDS),是一种将研究对象之间距离或者不相似度的直观展示,较为典型的研究对象是地理位置,当然也可以是观点、颜色等任意各类实体或抽象概念,比如茶的口味不相似情况。多维…

MoCo论文:Momentum Contrast for Unsupervised Visual Representation Learning

目录一. 引言二. 背景介绍:对比学习三. 标题和作者四. 动量方式:五. 摘要六. 相关工作七. 结论八. MoCo方法九. MoCo伪代码十. 文章贡献10.1 第一个贡献:如何把一个字典看成队列10.2 文章的第二个贡献:如何使用动量的思想去更新编…

GO-生命周期

好奇心 出于好奇,想了解go的执行生命周期,于是尝试跟着go的源码看看执行过程 go源码地址:GitHub - golang/go: The Go programming language 1.根据命令行编译文件,然后执行二进制文件 (1)从go运行命令…

基于深度学习的人工林地面激光扫描点云立木特征参数提取方法

Abstract 利用基于三维点云的技术量化立木和立木参数,可以在林业生态效益评估和立木培育和利用中发挥关键作用。随着光探测与测距(LiDAR)扫描等三维信息获取技术的进步,可以更高效地获取大面积、复杂地形的树木林分信息。然而&am…

IFC常用关系定义

IFC常用关系定义 IfcRelDefinesByType IfcRelDefinesByType表示对象化的关系(The objectified relationship),定义了一种对象类型定义(object type)和对象实体(object occurrences)的关系。IfcRelDefinesByType是1:n的关系,可以将一个对象类型定义(obj…

深入浅出scala之集合体系(集合即容器)(P46-4)

文章目录一、容器概念二、定长数组一、容器概念 1.集合是一种用来存储各种对象和数据的容器。 2.Scala集合分为可变和不可变的集合,不可变集合可以安全的并发访问。 可变集合可以在适当的地方被更新或扩展。这意味着可以修改,添加,移除一个集…

笔记:软件工程常用开源文档模板 + 软件著作权

https://github.com/AlexanderZhou01/China-software-copyright 下载以上的工程 解压放到U盘里 打开 D:\China-software-copyright-master 国家版权保护中心网址 办理步骤为企业获取政策优惠,减免。为学生提供成果。 办理步骤 (3030)∗50(3030)*50(3030)∗5…

Python 高效率传参调用 MATLAB 程序

Background python调用matlab脚本需要注意前置条件,具体参考官方文档:从 Python 中调用 MATLAB,大致就是两点:一是需要python和matlab版本对应,二是需要matlab运行环境mcr。具体安装配置可以参考:java和pyt…

使用Filebeat和AWS CloudWatch Logs将EC2上的Tomcat的access_log传送到ELK

文章目录背景和方案选择前提注册AWS账号创建EC2实例注意事项在EC2实例上安装aws-cloudwatch-agent注意事项测试aws-cloudwatch-agent是否可用使用Docker Compose部署ELK使用Docker Compose部署Filebeat配置文件说明docker-compose.yml说明filebeat配置文件说明input配置AWS Clo…

华为智能基座实验【计算机组成原理】

华为智能基座实验【计算机组成原理】前言推荐华为智能基座实验【计算机组成原理】1 课程介绍1.1 简介1.2 内容描述1.3 读者知识背景1.4 实验环境说明2 实验 1:hello-world 示例程序2.1 实验介绍2.1.1 关于本实验2.1.2 教学目标2.1.3 实验内容介绍2.2 实验任务操作指…

宝宝多大戒尿不湿?不看年龄看表现,用对方法轻松戒掉尿不湿

宝宝刚出生的时候,大小便次数比较多,宝宝自己也控制不了。这时,使用尿布可以减少父母的大量工作。但使用尿布只是暂时的。当宝宝到了一定年龄,就应该戒掉。宝宝能戒尿多大?既然尿布是用来兜宝宝大小便的,如…

从零学习 InfiniBand-network架构(十一) —— 管理器的介绍

从零学习 InfiniBand-network架构(十一) —— 管理器的介绍 🔈声明: 😃博主主页:王_嘻嘻的CSDN主页 🔑未经作者允许,禁止转载 🚩本专题部分内容源于《InfiniBand-network…

作为QA,我们要如何思考?

随着测试人员陆续开始尝试角色转变,坚守的QA需要找到自己的发展之路。兴趣和性格是客观因素,好奇心和发散性思维则是帮助成为优秀QA的必要因素。我想通过一些小的例子来与大家互动探讨。 测试你做对了吗? 让我们从这样一个现实中的小例子来…

【历史上的今天】12 月 30 日:C++ 之父诞生;Hotmail 创始人出生;Facebook 注册破百万

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2022 年 12 月 30 日,在 1930 年的这一天,“青蒿素之母”屠呦呦出生。2015 年 10 月 5 日,屠呦呦获得诺贝尔生理学或医学奖&#xf…