当前位置: 首页 > news >正文

Adaboost代码实现-葡萄酒实例

本章会介绍如何使用py进行Adaboost算法

一、导入相关的库

import pandas as pd
from sklearn.preprocessing import LabelEncoder # 标签编码器
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier # 集成学习,AdaBoost用的决策树
from sklearn.metrics import accuracy_score

二、获取数据集

df_wine = pd.read_csv("wine0501.csv")
print(df_wine.info())
print(df_wine['Class label'].unique()) # [1,2,3] 葡萄酒类别有三种,但是决策树只能识别二叉树

三、数据预处理

3.1 从标签列(class label)中,过滤掉1类别,剩下2,3类别

df_wine  = df_wine[df_wine['Class label'] != 1]
print(df_wine['Class label'].unique())

3.2 获取特征列和标签列

x = df_wine[['Alcohol','Hue']] # 酒精和色泽
y = df_wine['Class label']

3.3 打印数据

print(x[:5])
print(y[:5])

3.4 通过标签编码器,把标签列转换为数值列

le = LabelEncoder()
y = le.fit_transform(y)
print(y) #[2,3] --> [0,1]

3.5 训练集、测试集划分

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=23,stratify=y) #随机划分有可能出现极端情况,比如测试集里全是类别 1,类别 0 很少,导致测试集不能代表整体数据分布,模型评估结果失真。加上stratify可以保证抽样不会出现这种情况

四、特征工程,此处略

五、模型训练,预测,评估

5.1 场景1:单一决策树,充当弱分类器

# 4.1 创建模型对象
estimator1 = DecisionTreeClassifier(max_depth=3)
# 4.2 训练模型
estimator1.fit(x_train,y_train)
# 4.3 模型预测
y_pred1 = estimator1.predict(x_test)
print(f"单一决策树预测结果:{y_pred1}")
# 4.4 模型评估
print(f'单一决策树预测率{estimator1.score(x_test,y_test)}')
print(f'单一决策树预测率{accuracy_score(y_test,y_pred1)}') #这俩结果是一样的

5.2 场景2:AdaBoost -->集成学习,CART树,200棵

# 4.1 创建模型对象
# 参1:弱分类器(决策树对象),参2:弱分类器个数,参3:学习率,参4:集成算法
estimator2 = AdaBoostClassifier(estimator=estimator1, n_estimators=200,learning_rate=0.1,algorithm='SAMME')
# 4.2 训练模型
estimator2.fit(x_train,y_train)
# 4.3 模型预测
y_pred2 = estimator2.predict(x_test)
print(f"单一决策树预测结果:{y_pred2}")
# 4.4 模型评估
print(f'单一决策树预测率{estimator2.score(x_test,y_test)}')
print(f'单一决策树预测率{accuracy_score(y_test,y_pred2)}') #这俩结果是一样的
http://www.gsyq.cn/news/1563346.html

相关文章:

  • Netcat正反向Shell攻防:内网渗透与纵深防御实战解析
  • 终极Avalonia实战指南:5大核心模块深度解析与跨平台UI开发秘籍
  • emWin图表与表格控件实战:GRAPH_SCALE与HEADER深度解析
  • 基于决策树算法的感冒预测3(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 【防水工艺科普】微创防水施工相比传统砸砖,优势体现在哪些方面 - 青岛防水品牌推荐
  • 智能革新:biliTickerBuy如何重新定义B站会员购抢票体验
  • HC08微控制器编程实战:MCUscribe工具核心功能与避坑指南
  • useEffectReducer完全指南:让你的React副作用代码更清晰、更可维护
  • 关于comfyui的xformers参数memory_efficient_attention.fa2F是unavailable(flash_attn)
  • AppleRa1n:5步免费解锁iOS 15-16设备激活锁的完整指南
  • 2026多AI工具稳定使用方案:四层隔离架构与故障自愈实践
  • 深度学习图像去雾:物理建模与数据驱动的协同工程
  • 5个场景告诉你:为什么你的Windows需要这个“咖啡杯“防休眠神器
  • 解锁Audiveris多语言OCR:3步告别乐谱文本识别困扰
  • Trine迭代器操作完全指南:从基础到高级应用的10个技巧
  • 企业级可视化图表架构设计:Mermaid代码驱动图表解决方案技术解析
  • 数字电路模拟程序——三次迭代作业总结
  • wvp-GB28181-pro:构建专业级国标视频监控平台的终极解决方案
  • MATLAB+Domino+NVIDIA Fleet Command:工业边缘AI端到端部署实战
  • 3步快速免费解锁网盘高速下载:本地化直链解析解决方案
  • 重庆易企云AI推广:深耕川渝11年的全域智能营销服务商 - 起跑123
  • 微服务架构深度剖析:gh_mirrors/infra4/infra核心组件与通信机制详解
  • WorkBuddy:本地化AI工作流引擎,零依赖运行的办公自动化操作系统
  • LeRobot终极指南:如何用开源AI框架构建智能机器人控制系统
  • CANN/ge Graph Engine API GetType函数
  • 链路聚合(动态/静态)
  • 罗技鼠标宏终极指南:告别PUBG后坐力困扰的精准射击方案
  • Gaussian Splatting(高斯泼溅)技术原理与应用详解:下一代3D重建技术来了
  • 构建企业级AI推理平台:vLLM架构设计与生产部署指南
  • 深入解析后端技术栈:构建高性能Web应用的关键