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获取网页上图片下载地址的方法
Mar 11 Python
python递归计算N!的方法
May 05 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
Python socket服务常用操作代码实例
Jun 22 Python
用Python selenium实现淘宝抢单机器人
Jun 18 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
PHP4实际应用经验篇(4)
2006/10/09 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
原生js实现放大镜
2017/02/20 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
python自定义类并使用的方法
2015/05/07 Python
解决python "No module named pip" 的问题
2018/10/13 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
深入了解Django View(视图系统)
2019/07/23 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
python中append函数用法讲解
2020/12/11 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
铁路工务反思材料
2014/02/07 职场文书
《长相思》听课反思
2014/04/10 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
公路施工安全责任书
2015/05/08 职场文书
redis限流的实际应用
2021/04/24 Redis
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL