数据城堡参赛代码实战篇(七)--- xgboost介绍及实战
小编们最近参加了数据城堡举办的“大学生助学金精准资助预测”比赛,以分组第19名的成绩进入了复赛,很激动有木有!在上一篇文章中,小编介绍了使用sklearn进行数据标准化和通过网格搜索进行参数寻优的过程,至此,我们已经能够得到预测结果并上传。但小编们上传结果时所采取的结果并不是之前提到过的算法,而使用的是xgboost算法。今天,小编将带你一探xgboost算法的究竟!
1 简单介绍
xgboost的全称是eXtreme Gradient Boosting。它是Gradient Boosting Machine的一个c++实现。创建之由为受制于现有库的计算速度和精度,xgboost最大的特点在于,它能够自动利用CPU的多线程进行并行,同时在算法上加以改进提高了精度。现在xgboost已封装成了python库,并制作成了xgboost工具的R语言接口提交到了CRAN上,也有用户将其封装成了 julia库。
对于xgboost的原理,小编其实也不太懂,哈哈。如果大家想要深入了解其原理,推荐两篇博客:
http://www.tuicool.com/articles/r2Y36bR
http://blog.csdn.net/sb19931201/article/details/52557382
2 Python中使用xgboost
windows下安装xgboost参照如下博客(小编并未亲身实现):http://blog.csdn.net/zhuqiuhui/article/details/50450732
mac下安装xgboost参照如下博客(小编亲测可用):http://blog.csdn.net/kamendula/article/details/53166247
接下来,小编将给出一套完整的使用xgboost的代码:
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from xgboost import XGBClassifier
#读入数据
train_x = pd.read_csv('train_x.csv', index_col=0)
train_y = pd.read_csv('train_y.csv', index_col=0, header=None)
test_x = pd.read_csv('test.csv', index_col=0)
train_ys = np.array(train_y).reshape(-1)
#定义训练集和测试集需要的维度
predict = ['order', 'en1','sum', 'time_stamp', 'consumeavg']
train_x=train_x[predict]
text_x=test_x[predict]
#数据标准化
ss = StandardScaler()
for c in predict:
train_x[c] = ss.fit_transform(train_x[c])
test_x[c] = ss.transform(test_x[c])
#定义模型
xgb=XGBClassifier()
#训练模型
xgb.fit(train_x,train_y)
#得到预测结果
result = xgb.predict(test_x)
可以看到,xgboost使用与sklearn中其他的分类算法使用完全相同,定义模型之后使用fit函数进行训练,并通过predict函数得到测试集的预测结果。
3 总结
本篇,小编带你使用了xgboost分类器,用在博客中看到的一句话来总结下xgboost的强大:
如果把数据竞赛比作金庸笔下的武林,那么XGBoost就是屠龙刀! “号令天下,莫敢不从!倚天不出,谁与争锋?”
至此,本系列的文章已经全部更新完毕,希望能够对大家有所帮助。
想了解更多? 那就赶紧来关注我们
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Golang中的interface是干嘛的?从面向对象中的多态与接口开始说起……
- pandas | DataFrame基础运算以及空值填充
- C++设计模式笔记(08) - Factory Method工厂方法
- 【Code】GraphSAGE 源码解析
- Kafka常见的导致重复消费原因和解决方案
- 近30个MySQL常用函数,必须推荐!
- 搞定 CompletableFuture,并发异步编程和编写串行程序还有什么区别?你们要的多图长文
- 用注解实现 MyBatis 开发
- MyBatis 实现数据的增删改查
- 0790-5.16.2-NameNode服务的edits不同步异常
- 0789-不停止MySQL服务重做备库的方法
- 防盗链Apache和Nginx配置对比
- Python 类特殊方法__getitem__
- 前端自动化测试探索和实践
- 我的开发日记(十四)