百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

机器学习AI比赛大杀器:xgboost的解决分类问题,实例代码和安装

bigegpt 2024-09-02 16:31 3 浏览

专栏推荐

(此处已添加圈子卡片,请到今日头条客户端查看)

本文重点

要想实现xgboost,首先我们要安装xgboost,

方法一:pip install xgboost

方法二:登录网址https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost,然后往下翻,我们可以找到我们想要的xgboost的whl文件

cp表示python的版本,而win32表示32位的,win64表示64位的,所以我们最好下载匹配我们版本的那个xgboost,我们原始ie浏览器才能下载,也不知道怎么回事。

whl文件之所以方便是因为它是编译好的,所以安装他比较方便,我把它放到了c盘下,这样安装命令如图所示

这样就表示安装成功了,注意这是在window下的安装环境,在linux下会很方便的。

安装好的之后,我们就通过一个案例来看一下究竟这个东西怎么使用?

我们现在有一个数据集,这个数据集中有两类:

分别是y=0和y=1,我们要使用这个xgboost来完成这个分类任务

我首先使用sklearn工具先将这个数据集分成两部分,一部分是训练集,一部分测试集

import xgboostfrom numpy import loadtxtfrom xgboost import XGBClassifierimport sklearnfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score# load datadataset = loadtxt('pima-indians-diabetes.csv', delimiter=",")X= dataset[:,0:8]Y = dataset[:,8]seed = 7test_size = 0.33X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)

这里我们使用的numpy中的加载文件的工具loadtxt先来将文件加载,然后我们使用切片的方式来获取特征x和标注y,然后使用sklearn工具的train_test_split来讲我们的数据集分成两部分,一部分是训练集,一部分验证集,test_size指定训练集的比例。因为这个是随机分的,所以假如运行多次,那么每一次获得到的数据集和测试集是不一样的,所以我们可以通过random_state指定随机的方式,也就是指定之后,运行无数次,训练集和测试集也都是一样的。

输出X_train和X_test的结果位:

我在做这一步的时候出现了一个问题,这个问题就是报错 ImportError: No module named model_selection ,这个模块是sklearn中的,我检查发现原因就是原因,我的sklearn版本太低了,所以升级以下就ok了

我们可以使用conda list来看当前的我们安装库的版本,所以我们升级这个版本就好了conda update scikit-learn,但是直接这样升级,它会去找国外的镜像,所以非常慢,而且还不一定安装成功,为了解决这个问题,我们可以使用国内的镜像,比如清华大学的镜像。

cmd环境下或者Prompt,输入:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --set show_channel_urls yes

这样之后,我们就可以conda update scikit-learn

然后这就可以升级完成了,以后就不会报错了。解决完这个可能遇到的插曲之后,我们在来往下来看

我们的训练集和测试集数据已经有了,下面的任务是使用训练集来训练我们的模型,并且用测试集来测试我们的模型,得到我们模型的准确率:

model = XGBClassifier()model.fit(X, Y)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))

首先创建一个XGBClassifier的分类器,然后使用这个分类器来拟合我们的数据,这样我们xgboost的模型就建立了,然后我们可以使用这个模型来预测我们的测试集数据,它返回的结果是所有预测样本的0,1。结果为:

然后我们遍历这个列表,使用round来对每一个数进行处理,结果为:

那么这个就是所有的我们测试集的预测数据,那么我们拿它和y_test来一一进行比较,就可以得出我们的模型在测试集准确率,当前准确率为:

Accuracy: 88.19%

全部代码为:

我们在使用xgboost的过程中其实就是不断在地在往里面加树,一开始它有基准模型,然后在基准模型地基础上又加入了一个小地模型,使得整体地模型发生了变化,我们上面是直接地使用xgboost,其实我们也可以进行监控,每加上一棵树,每加上一个小模型都可以看到加完之后模型地结果是怎么样地,看一下这个过程中地lost值发生什么样地变化

eval_set = [(X_test, y_test)]model.fit(X_train, y_train, early_stopping_rounds=10, eval_metric="logloss", eval_set=eval_set, verbose=True)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))

首先我们创建一个eval_set,因为X_test和y_test这二者本身就是array,一个二维一个一维,然后用括号括起来,然后再用[]括起来,那么最终地效果就是[([[]],[])]

最为关键地其实就是下面拟合地过程,第一个和第二个数据还是我们地训练样本,这个训练样本用于拟合数据。然后第三个参数early_stopping_rounds=10表示如果我们再不断建立树地时候,loss值有10次没有降低地话,那么建树过程就停止了,模型就最终确定了。第四个参数eval_metric表示用什么loss作为评判地表准,这里使用logloss,第五个参数为测试集数据,我们每创建一棵树,就要用当前地模型来测试一下这个测试集,如果想要让这个测得地过程显示出来,我们需要指定verbose=True,不用我们输出,它会自动输出。

这段程序地运行结果为:

可以看出这个模型再第42次停止了,也就是说从第32次到42次模型地loss基本没有变化,我们最终模型对测试集地准确度为78.35%。

相关推荐

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...

无线网卡有几种接口?怎么给电脑选择一款合适的无线网卡?

这篇文章一共有两个问题:无线网卡有几种接口怎么给电脑选择一款合适的无线网卡目测这一期的文章很长很长,但不水。想要给笔记本或台式机升级无线网卡的小伙伴看过来了!最近有小伙伴问:华硕r555笔记本能不能升...

SATA、PCIe和M.2 —— 主板上的各种插槽解析

如果小伙伴们想升级显卡或SSD时,需要了解自己的电脑上支持显卡和SSD的主板接口,这样才能帮助你选择适合的并且能够发挥最大性能的硬件。SSD和显卡常用的接口是SATA和PCIExpress。SATA...

高性价比不失稳定 顶格M.2固态硬盘性能实测

对于存储产品的需求,可以说用户是永无止境的,一方面要求容量大速度快,一方面又要体积小。为此,英特尔在新一代100系列主板上作出了调整,让M.2接口彻底取代mSATA。M.2又称NGFF,它的体积非常小...

高端性价比M.2(PCIe) SSD:SAMSUNG 三星 SM951 NVMe 256GB 开箱简评

作者:DavidBill一、序:为什么不买同门的950PROM.2呢?因为囊中羞涩为什么不买Intel750呢?理由同上二、原理与介绍:普通的ssd大家应该都很熟了吧……那这个M.2(PCIe)...

固态硬盘的发展与无奈 回首SSD这一年

固态硬盘开始流行还是在两年前,当初人们顾忌的价格、容量等问题已经逐渐不是问题。SSD售价已经完全平民化,SandForce主控被希捷收购,看起来形势一片大好。此时人们对于SSD所关心的问题,已经不是两...

固态硬盘协议,分为接口协议和传输协议

提到固态硬盘,大家脑子里面能想到的可能主要还是SATA固态硬盘和M.2固态硬盘,还有就是NVME协议固态硬盘,但是大家知道SATA和NVME这些是什么意思吗,其实我们在固态硬盘领域常常提起的SATA、...

手痒的狠!DELL工作站再次拆机,WWAN口加装2242硬盘

3年前购入的dell工作站3510,工作习惯原因,15寸全键盘首选,然后dell的小圆点+触控板设计,和屏幕可180°打开平放的特点,就选用的此款,当时选的i7-6700hq,官方cpu已经最高了,...

无线网卡m2 ngff keyakeye接口改转多口有线网卡实现软路由

无线网卡m2ngffkeyakeye接口改转多口有线网卡实现软路由小型主板及笔记本中的无线网卡m2ngffkeyakeye接口(CNVI除外)通过m2ngffkeyae转接pcie1x转...

M.2固态硬盘不是随便换的(m.2固态硬盘可以改成移动硬盘吗)

M.2固态硬盘更换须知第一部分:了解目前固态硬盘的主要接口1.SATA-2接口:目前大多数2.5英寸SSD以及HDD硬盘都使用这种接口,理论传输带宽6Gbps,虽然比起新接口的1...