python机器学习库xgboost的使用


Posted in Python onJanuary 20, 2020

1.数据读取

利用原生xgboost库读取libsvm数据

import xgboost as xgb
 data = xgb.DMatrix(libsvm文件)

使用sklearn读取libsvm数据

from sklearn.datasets import load_svmlight_file
 X_train,y_train = load_svmlight_file(libsvm文件)

使用pandas读取完数据后在转化为标准形式

2.模型训练过程

1.未调参基线模型

使用xgboost原生库进行训练

import xgboost as xgb
from sklearn.metrics import accuracy_score

dtrain = xgb.DMatrix(f_train, label = l_train)
dtest = xgb.DMatrix(f_test, label = l_test)
param = {'max_depth':2, 'eta':1, 'silent':0, 'objective':'binary:logistic' }
num_round = 2
bst = xgb.train(param, dtrain, num_round)
train_preds = bst.predict(dtrain)
train_predictions = [round(value) for value in train_preds] #进行四舍五入的操作--变成0.1(算是设定阈值的符号函数)
train_accuracy = accuracy_score(l_train, train_predictions) #使用sklearn进行比较正确率
print ("Train Accuary: %.2f%%" % (train_accuracy * 100.0))

from xgboost import plot_importance #显示特征重要性
plot_importance(bst)#打印重要程度结果。
pyplot.show()

使用XGBClassifier进行训练

# 未设定早停止, 未进行矩阵变换
from xgboost import XGBClassifier
from sklearn.datasets import load_svmlight_file #用于直接读取svmlight文件形式, 否则就需要使用xgboost.DMatrix(文件名)来读取这种格式的文件
from sklearn.metrics import accuracy_score
from matplotlib import pyplot


num_round = 100
bst1 =XGBClassifier(max_depth=2, learning_rate=1, n_estimators=num_round, #弱分类树太少的话取不到更多的特征重要性
          silent=True, objective='binary:logistic')
bst1.fit(f_train, l_train)

train_preds = bst1.predict(f_train)
train_accuracy = accuracy_score(l_train, train_preds)
print ("Train Accuary: %.2f%%" % (train_accuracy * 100.0))

preds = bst1.predict(f_test)
test_accuracy = accuracy_score(l_test, preds)
print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))

from xgboost import plot_importance #显示特征重要性
plot_importance(bst1)#打印重要程度结果。
pyplot.show()

2.两种交叉验证方式

使用cross_val_score进行交叉验证

#利用model_selection进行交叉训练
from xgboost import XGBClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import accuracy_score
from matplotlib import pyplot

param = {'max_depth':2, 'eta':1, 'silent':0, 'objective':'binary:logistic' }
num_round = 100
bst2 =XGBClassifier(max_depth=2, learning_rate=0.1,n_estimators=num_round, silent=True, objective='binary:logistic')
bst2.fit(f_train, l_train)
kfold = StratifiedKFold(n_splits=10, random_state=7)
results = cross_val_score(bst2, f_train, l_train, cv=kfold)#对数据进行十折交叉验证--9份训练,一份测试
print(results)
print("CV Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

from xgboost import plot_importance #显示特征重要性
plot_importance(bst2)#打印重要程度结果。
pyplot.show()

python机器学习库xgboost的使用 

使用GridSearchCV进行网格搜索

#使用sklearn中提供的网格搜索进行测试--找出最好参数,并作为默认训练参数
from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score
from matplotlib import pyplot

params = {'max_depth':2, 'eta':0.1, 'silent':0, 'objective':'binary:logistic' }
bst =XGBClassifier(max_depth=2, learning_rate=0.1, silent=True, objective='binary:logistic')
param_test = {
 'n_estimators': range(1, 51, 1)
}
clf = GridSearchCV(estimator = bst, param_grid = param_test, scoring='accuracy', cv=5)# 5折交叉验证
clf.fit(f_train, l_train) #默认使用最优的参数


preds = clf.predict(f_test)

test_accuracy = accuracy_score(l_test, preds)
print("Test Accuracy of gridsearchcv: %.2f%%" % (test_accuracy * 100.0))

clf.cv_results_, clf.best_params_, clf.best_score_

3.早停止调参?early_stopping_rounds(查看的是损失是否变化)

#进行提早停止的单独实例
import xgboost as xgb
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
from matplotlib import pyplot

param = {'max_depth':2, 'eta':1, 'silent':0, 'objective':'binary:logistic' }
num_round = 100
bst =XGBClassifier(max_depth=2, learning_rate=0.1, n_estimators=num_round, silent=True, objective='binary:logistic')
eval_set =[(f_test, l_test)]
bst.fit(f_train, l_train, early_stopping_rounds=10, eval_metric="error",eval_set=eval_set, verbose=True) #early_stopping_rounds--当多少次的效果差不多时停止  eval_set--用于显示损失率的数据 verbose--显示错误率的变化过程

# make prediction
preds = bst.predict(f_test)

test_accuracy = accuracy_score(l_test, preds)
print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))

4.多数据观察训练损失

#多参数顺
import xgboost as xgb
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
from matplotlib import pyplot

num_round = 100
bst =XGBClassifier(max_depth=2, learning_rate=0.1, n_estimators=num_round, silent=True, objective='binary:logistic')
eval_set = [(f_train, l_train), (f_test, l_test)]
bst.fit(f_train, l_train, eval_metric=["error", "logloss"], eval_set=eval_set, verbose=True)

# make prediction
preds = bst.predict(f_test)
test_accuracy = accuracy_score(l_test, preds)
print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))

python机器学习库xgboost的使用

5.模型保存与读取

#模型保存
bst.save_model('demo.model')

#模型读取与预测
modelfile = 'demo.model'

# 1
bst = xgb.Booster({'nthread':8}, model_file = modelfile)

# 2

f_test1 = xgb.DMatrix(f_test) #尽量使用xgboost的自己的数据矩阵
ypred1 = bst.predict(f_test1)
train_predictions = [round(value) for value in ypred1]
test_accuracy1 = accuracy_score(l_test, train_predictions)
print("Test Accuracy: %.2f%%" % (test_accuracy1 * 100.0))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的高级函数map/reduce使用实例
Apr 13 Python
python实现给数组按片赋值的方法
Jul 28 Python
常见的python正则用法实例讲解
Jun 21 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 #Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 #Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 #Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 #Python
基于Python获取照片的GPS位置信息
Jan 20 #Python
如何基于pythonnet调用halcon脚本
Jan 20 #Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 #Python
You might like
PHP exif扩展方法开启详解
2014/07/28 PHP
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
Python下Fabric的简单部署方法
2015/07/14 Python
详解Django中的form库的使用
2015/07/18 Python
python 初始化一个定长的数组实例
2019/12/02 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
合作意向书模板
2014/03/31 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
高三英语复习计划
2015/01/19 职场文书
毕业生党员个人总结
2015/02/14 职场文书
学校少先队工作总结
2015/08/12 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
Android实现图片九宫格
2022/06/28 Java/Android