有手就行——基础XGBoost实战以 iris 数据集为例

news2024/12/22 14:18:24

基础 XGBoost 实战以 iris 数据集为例

    • 1、导入数据
    • 2、数据预处理
    • 3、分训练集和测试集
    • 4、训练模型构建
    • 5、测试集预测准确度
    • 6、构建混淆矩阵
    • 7、特征重要性

对于很多只是小小使用机器学习,而不是深入了解的人来说,了解各种原理可能是十分痛苦的,所以这里就以 XGBoost 为例,从导入数据到最后预测都用简单代码求解。 注意:以下图表是在 Jupyter 上运行得到的。

1、导入数据

不管怎么样,先导入数据,然后观察数据是否需要进行预处理

import pandas as pd
df = pd.read_csv('iris.csv')
df.head()

在这里插入图片描述

2、数据预处理

从上表可以发现,数据集的最后一列是字符型,需要转化为数值型(也就是 0 , 1 , 2 0,1,2 0,1,2)才能进行后续操作。

from sklearn.preprocessing import LabelEncoder
df['class'] = LabelEncoder().fit_transform(df.iloc[:,-1])

3、分训练集和测试集

把特征和标签分开,得到 X X X y . y. y.

X = df.drop(columns='class')
y = df['class']

提取完特征变量后,通过如下代码将数据分为 80 % 80\% 80% 的训练集和 20 % 20\% 20% 的测试集。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)

4、训练模型构建

划分为训练集和测试集之后,就可以引入 X G B o o s t XGBoost XGBoost 分类器进行模型训练了,参数的选择可以根据自己的实际情况设置,这里随便设置,代码如下:

from xgboost import XGBClassifier
clf = XGBClassifier(n_estimators=100, learning_rate=0.05)
clf.fit(X_train, y_train)

在这里插入图片描述

5、测试集预测准确度

模型训练完毕后,通过如下代码预测测试集数据,并将预测值和实际值进行对比

y_pred = clf.predict(X_test)
a = pd.DataFrame()  # 创建一个空DataFrame 
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
a.head()

在这里插入图片描述
计算测试值的预测准确度,可以使用如下两个代码中的一个,第一个是 s k l e a r n sklearn sklearn 的,第二个是模型自带的。准确度为 93.33 % 93.33\% 93.33%

# 第一种
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred, y_test)
score
# 第二种
clf.score(X_test, y_test)

XGBClassifier 分类器本质预测的并不是准确的 0 0 0 1 1 1 的分类,而是预测其属于某一分类的概率,查看预测属于各个分类的概率

6、构建混淆矩阵

y_pred_proba = clf.predict_proba(X_test)

r o c roc roc 曲线通常用于二分类,多分类选择用混淆矩阵

# 多分类用混淆矩阵
from sklearn.metrics import confusion_matrix
C = confusion_matrix(y_test,y_pred)
# 画图
import matplotlib.pyplot as plt
plt.matshow(C,cmap=plt.cm.Greens)
for i in range(len(C)):
    for j in range(len(C)):
        plt.annotate(C[j, i], xy=(i, j), horizontalalignment='center', verticalalignment='center')
# 加标签
plt.ylabel('True label')
plt.xlabel('Pred label')
# 设置字体大小。
plt.ylabel('True label', fontdict={'family': 'Times New Roman', 'size': 20}) 
plt.xlabel('Pred label', fontdict={'family': 'Times New Roman', 'size': 20})
plt.show()

在这里插入图片描述

7、特征重要性

展示各个特征的重要性

# 获取特征名称
features = X.columns
# 获取特征重要性
importances = clf.feature_importances_  
# 通过二维表格形式显示
importances_df = pd.DataFrame()
importances_df['特征名称'] = features
importances_df['特征重要性'] = importances
importances_df.sort_values('特征重要性', ascending=False)

在这里插入图片描述
可以发现第三个特征 p e t a l _ l e n g t h petal\_length petal_length 的重要性高达 72 % 72\% 72%,第二个特征 p e t a l _ w i d t h petal\_width petal_width 的重要性高达 21 % 21\% 21%,这两个特征加起来高达 93 % 93\% 93%.

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

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

相关文章

Gnuplot绘图入门2 快捷方式

Gnuplot绘图入门2——根据多列文本数据绘制图形 Gnuplot绘图入门1以绘制sin(x)的函数图形为例,对Gnuplot进行了简要介绍。这个教程将介绍如何使用Gnuplot对保存在文本文件(.txt、.dat文件)中的数据进行可视化。 将下面的数据复制下了&#…

Linux安装Nginx,源码安装及创建软连接

前言 Nginx是一个功能强大、高性能、可扩展、易用和安全的Web服务器和反向代理服务器,被广泛应用于企业级和互联网领域 可扩展性:Nginx可以通过添加各种模块和插件来扩展其功能,包括HTTP流控制、SSL加密、压缩和解压缩、访问控制等。 高可靠…

项目设计:迷宫游戏设计day3

一、界面制作 我用的easyx实现图形化界面,在制作第一个界面的时候,第一个界面的功能有开始游戏,退出游戏,排行榜(虽然还没实现) 那么首先还是得用一个图片贴在上面,这个图片是我自己画的&#…

20230419 生物基础学习- 氨基酸-密码子-突变

文章目录 名称形状密码子-氨基酸对应表简明中文英文和简称突变类型生物化学课程笔记特殊氨基酸的性质缬氨酸和甲硫氨酸 染色体 - RNA - 蛋白质 名称 Phenylalanine,Leucine,Isoleucine,Methionine,Valine,Serine,Proline,Threonine,Alanine,Tyrosine,Histidine,Glutamine,Aspa…

「 计算机网络 」HTTP和RPC的区别与联系

「 计算机网络 」HTTP和RPC的区别与联系 参考&鸣谢 HTTP 和 RPC 的区别 小十七_ Http协议和Rpc协议有什么区别? 俗人杂念 为什么要自研RPC框架?HTTP和RPC的区别 starine 既然有HTTP协议,为什么还要有RPC 小白debug 文章目录 「 计算机网络…

工装识别工装检测系统 yolov7

工装识别工装检测系统通过yolov7python网络模型算法智能分析技术,工装识别工装检测系统对现场人员是否穿戴的进行实时分析,发现现场画面人员未按要求着装,系统会自动抓拍发出警报并讲违规图片视频保存下来,同步回传后台提醒监理人…

uniapp调用七牛云api实现文件上传-node.js向外提供uploadToken的接口-客户端不用下载七牛云的包和SDK-发起网络请求直接上传

uniapp调用七牛云api实现文件上传 实现思路: 1.使用node.js向客户端提供uploadToken,客户端获取uploadToken后使用七牛云的api接口发起网络请求,上传文件; node.js向外提供uploadToken的接口-客户端不用下载七牛云的包和SDK-&…

macOS电脑

UNIX操作系统有一个规范,名叫《单一UNIX规范》(Single UNIX Specification)。凡是符合这个规范的操作系统都可以叫UNIX操作系统,并且可以通过UNIX官方认证。 UNIX商标认证官网是:The Register of UNIX Certified Prod…

flink动态表的概念详解

目录 前言🚩 动态表和持续不断查询 stream转化成表 连续查询 查询限制 表转化为流 前言🚩 传统的数据库SQL和实时SQL处理的差别还是很大的,这里简单列出一些区别: 尽管存在这些差异,但使用关系查询和SQL处理流并…

界面控件Telerik UI for WinForms使用指南 - 数据绑定 填充(一)

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件,所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 Telerik UI for WinForms组件为可视化任何类…

RoBERTa 阅读笔记

RoBERTa 阅读笔记 https://arxiv.org/abs/1907.11692 总的来说,bert在模型上并没有做太多的改进,只是在训练数据和训练策略上进行了一个改进。 相较于BERT的改进 1. Masking策略 stastic: 原始 BERT 的 masking 是固定的,RoBERTa 给相同的…

ChatGPT: 智能对话时代的未来展望与应用实践

ChatGPT: 智能对话时代的未来展望与应用实践 简介 ChatGPT 是一种基于深度学习和自然语言处理技术的人工智能对话模型。它可以通过生成自然语言文本的方式,与用户进行交互式的对话。作为一种先进的对话生成模型,ChatGPT 在近年来快速发展的人工智能领域中…

首次发刊!Coremail管理员社区2023年Q1季刊发布

4月21日,Coremail安全邮件城市沙龙在北京正式开展,此次沙龙活动的主题为“践行教育信创,护航邮件安全”。广东盈世计算机科技有限公司服务副总裁、ICANN UA大使吴秀诚在活动上正式发布《Coremail管理员社区2023年Q1季刊》。 Coremail管理员社…

公网远程访问公司内网象过河ERP系统「内网穿透」

文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 概述 ERP系统对于企业来说重要性不言而喻,不管是财务、生产、销售还是采购,都需要用到ERP系统来协助。…

基于spring+vue开发的音乐网站

摘要 随着科学技术的飞速发展,社会的各个领域都在努力与现代的先进技术接轨,以提高自身的优势。音乐推荐管理也不能排除在外。音乐推荐管理是一个管理系统,以实际运用为开发背景,采用JSP技术构建,使用软件工程开发方法…

《面试1v1》java注解

我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官:接下来,聊聊Java的注解,它们到底有什么用? 候选人: 注解的用处主要三个: 第一个,编译期使用。比如Override确保你正确重…

activeMQ持久化报错的问题

activeMQ持久化,启动activeMQ报错, INFO | Using Persistence Adapter: JDBCPersistenceAdapter(org.apache.commons.dbcp2.BasicDataSource5148e82a) jvm 1 | WARN | Could not get JDBC connection: Cannot create PoolableConnectionFactory (Commun…

matlab点云的可视化-源码复制粘贴即可(一)

一、导入并可视化一个无属性的点云 clc; clear; close; % clear everything% Import a point cloud from a plain text file (run type(Lion.xyz) to see the contents of the file) pc pointCloud(Lion.xyz);% Generate a z-colored view of the point cloud pc.plot;% Set …

加密解密软件VMProtect入门使用教程(二):分析、破解和保护软件

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…

Vue ElementUI Axios 前后端案例(day03) 之 Axios

前置知识 AJAX 前置知识 答疑 问:我们是否可以这么理解,发送url请求就是服务器之间建立连接,tcp三次握手之后 其中与服务器进行数据交换:通过AJAX可以给服务器发送请求 就是连接建立以后 我们发送我们的浏览器数据 就是所谓的…