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

将许多弱分类器集成在一起形成一个强分类器XGBoost

bigegpt 2024-09-02 16:30 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%。

相关推荐

如何使用Java API操作HDFS系统?(hdfs java api的常见环境准备?)

1.搭建项目环境打开Eclipse选择FileàNewàMavenProject创建Maven工程,选择“Createasimpleproject”选项,点击【Next】按钮,会进入“New...

DataX写插件开发-集成阿里云RocketMQ

在上一期我们对datax进行了技术调研DataX数据异构、数据同步神器,这一次我们集成一个RocketMQ写插件,能够非常方便对将mysql数据同步到MQ中,下面来总结下具体步骤。1.下载datax源...

以SpringMVC+Shiro+Mybatis为核心开发的精简后台系统源码分享

项目说明源码获取方式:关注转发之后私信回复【源码】即可免费获取到以SpringMVC+Shiro+Mybatis为核心开发的精简后台基础系统。包含用户管理,角色管理,部门管理,权限管理,菜单管理,日志...

手把手教小伙伴们使用 Nginx 部署 TienChin 项目!

今天我就来手把手教小伙伴们部署TienChin项目,一起把这个项目跑起来,看看到底是个什么样的项目。小伙伴们知道,对于这种前后端分离的项目,我们在实际部署的时候,可以按照前后端分离的方式来部署,也...

推荐一款超棒的SpringCloud 脚手架项目

之前接个私活,在网上找了好久没有找到合适的框架,不是版本低没人维护了,在不就是组件相互依赖较高。所以我自己搭建一个全新spingCloud框架,里面所有组件可插拔的,集成多个组件供大家选择,喜欢哪个用...

SpringCloud 微服务迁移到 Kubernetes 容器化完整流程

k8s容器部署流程具体步骤:第一步:熟悉SpringCloud微服务项目第二步:源代码编译构建第三步:构建项目镜像并推送到镜像仓库第四步:K8s服务编排第五步:部署服务所需的基础环境第六步:部署微服...

SpringBoot 实现动态配置及项目打包部署上线

一、动态配置文件我们需要了解Spring动态指定配置文件的方式,来提高我们的部署效率。1.1、概述在实际企业开发中,开发环境、测试环境、生产环境通常采用不同的数据库等中间件的连接方式。如果此时我们按照...

3.5 源码安装ONOS1.3.0(源码包怎么安装)

ONOS是由ON.Lab使用Java及Apache实现发布的首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。近日笔者在学习ONOS的过程中写下了这篇文章,希望可以对刚接触ONOS的同学们...

jenkins+gitlab 实现自动化部署(jenkins配置git自动部署)

目录1、安装jdk,要记住安装路径2、安装maven,要记住安装路径3、安装git,要记住安装路径4、安装gitlab5、安装jenkins(centos7)创建安装目录下载通用war包启动和关闭Je...

CI&CD落地实践6-Jenkins接入maven构建后端springboot项目

前言在前面一篇《CI&CD落地实践5-Jenkins分布式环境搭建及多节点运行》中,我们介绍了如何在Windows及Linux系统上部署Jenkins从节点,本章节介绍如何在Jenkins创建mave...

从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

阅读目录:一、前言二、发布流程三、环境准备四、部署思路梳理五、三台机器上操作六、Git机器上操作七、Docker机器上操作八、Jenkins机器上操作九、上传JAVA项目代码到Git仓库十、Jenki...

微服务架构实战:使用Jenkins实现自动化构建

使用Jenkins实现自动化构建一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微...

Jenkins 自动化部署实例讲解(jenkins自动化部署git 项目)

前言你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相信你应该是有过这种感触的。这种情况下,我一般会劝你了解一下Jenkins这个玩意...

多模块的微服务项目容器化与Git追踪发布记录

在使用了微服务后,一个项目往往由多个模块组成,而容器化发布的建议是单个容器尽量只运行单个进程。所以我们会把每个模块单独打包成镜像运行。如果每个模块都单独配置Dockerfile会让我们维护起来很麻烦。...

手把手教你使用 Jenkins+Docker 实现持续集成

作者:乐之终曲来源:https://blog.csdn.net/qq_37143673/对于Jenkins我只能用两个字形容,难用。就不过多吐槽了,本篇是基于docker环境的使用。1.安...