【集成学习】sklearn中xgboost模块的XGBClassifier函数
# 常规参数
- booster
- gbtree 树模型做为基分类器(默认)
- gbliner 线性模型做为基分类器
- silent
- silent=0时,不输出中间过程(默认)
- silent=1时,输出中间过程
- nthread
- nthread=-1时,使用全部CPU进行并行运算(默认)
- nthread=1时,使用1个CPU进行运算。
- scale_pos_weight
- 正样本的权重,在二分类任务中,当正负样本比例失衡时,设置正样本的权重,模型效果更好。例如,当正负样本比例为1:10时,scale_pos_weight=10。
# 模型参数
- n_estimatores
- 含义:总共迭代的次数,即决策树的个数
- 调参:
- early_stopping_rounds
- 含义:在验证集上,当连续n次迭代,分数没有提高后,提前终止训练。
- 调参:防止overfitting。
- max_depth
- 含义:树的深度,默认值为6,典型值3-10。
- 调参:值越大,越容易过拟合;值越小,越容易欠拟合。
- min_child_weight
- 含义:默认值为1,。
- 调参:值越大,越容易欠拟合;值越小,越容易过拟合(值较大时,避免模型学习到局部的特殊样本)。
- subsample
- 含义:训练每棵树时,使用的数据占全部训练集的比例。默认值为1,典型值为0.5-1。
- 调参:防止overfitting。
- colsample_bytree
- 含义:训练每棵树时,使用的特征占全部特征的比例。默认值为1,典型值为0.5-1。
- 调参:防止overfitting。
# 学习任务参数
- learning_rate
- 含义:学习率,控制每次迭代更新权重时的步长,默认0.3。
- 调参:值越小,训练越慢。
- 典型值为0.01-0.2。
- objective 目标函数
- 回归任务
- reg:linear (默认)
- reg:logistic
- 二分类
- binary:logistic 概率
- binary:logitraw 类别
- 多分类
- multi:softmax num_class=n 返回类别
- multi:softprob num_class=n 返回概率
- rank:pairwise
- eval_metric
- 回归任务(默认rmse)
- rmse--均方根误差
- mae--平均绝对误差
- 分类任务(默认error)
- auc--roc曲线下面积
- error--错误率(二分类)
- merror--错误率(多分类)
- logloss--负对数似然函数(二分类)
- mlogloss--负对数似然函数(多分类)
- gamma
- 惩罚项系数,指定节点分裂所需的最小损失函数下降值。
- 调参:
- alpha
- L1正则化系数,默认为1
- lambda
- L2正则化系数,默认为1
# 代码主要函数:
- 载入数据:load_digits()
- 数据拆分:train_test_split()
- 建立模型:XGBClassifier()
- 模型训练:fit()
- 模型预测:predict()
- 性能度量:accuracy_score()
- 特征重要性:plot_importance()
1 # -*- coding: utf-8 -*-
2 """
3 ###############################################################################
4 # 作者:wanglei5205
5 # 邮箱:wanglei5205@126.com
6 # 代码:http://github.com/wanglei5205
7 # 博客:http://cnblogs.com/wanglei5205
8 # 目的:学习xgboost的XGBClassifier函数
9 # 官方API文档:http://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.training
10 ###############################################################################
11 """
12 ### load module
13 import matplotlib.pyplot as plt
14 from sklearn import datasets
15 from sklearn.model_selection import train_test_split
16 from sklearn.metrics import accuracy_score
17 from xgboost import XGBClassifier
18 from xgboost import plot_importance
19
20 ### load datasets
21 digits = datasets.load_digits()
22
23 ### data analysis
24 print(digits.data.shape)
25 print(digits.target.shape)
26
27 ### data split
28 x_train,x_test,y_train,y_test = train_test_split(digits.data,
29 digits.target,
30 test_size = 0.3,
31 random_state = 33)
32 ### fit model for train data
33 model = XGBClassifier(learning_rate=0.1,
34 n_estimators=1000, # 树的个数--1000棵树建立xgboost
35 max_depth=6, # 树的深度
36 min_child_weight = 1, # 叶子节点最小权重
37 gamma=0., # 惩罚项中叶子结点个数前的参数
38 subsample=0.8, # 随机选择80%样本建立决策树
39 colsample_btree=0.8, # 随机选择80%特征建立决策树
40 objective='multi:softmax', # 指定损失函数
41 scale_pos_weight=1, # 解决样本个数不平衡的问题
42 random_state=27 # 随机数
43 )
44 model.fit(x_train,
45 y_train,
46 eval_set = [(x_test,y_test)],
47 eval_metric = "mlogloss",
48 early_stopping_rounds = 10,
49 verbose = True)
50
51 ### plot feature importance
52 fig,ax = plt.subplots(figsize=(15,15))
53 plot_importance(model,
54 height=0.5,
55 ax=ax,
56 max_num_features=64)
57 plt.show()
58
59 ### make prediction for test data
60 y_pred = model.predict(x_test)
61
62 ### model evaluate
63 accuracy = accuracy_score(y_test,y_pred)
64 print("accuarcy: %.2f%%" % (accuracy*100.0))
65 """
66 95.74%
67 """
【集成学习】sklearn中xgboost模块的XGBClassifier函数的更多相关文章
- 【集成学习】sklearn中xgboost模块中plot_importance函数(绘图--特征重要性)
直接上代码,简单 # -*- coding: utf-8 -*- """ ################################################ ...
- sklearn中xgboost模块中plot_importance函数(特征重要性)
# -*- coding: utf-8 -*- """ ######################################################### ...
- 集成学习之Boosting —— XGBoost
集成学习之Boosting -- AdaBoost 集成学习之Boosting -- Gradient Boosting 集成学习之Boosting -- XGBoost Gradient Boost ...
- 【集成学习】sklearn中xgboot模块中fit函数参数详解(fit model for train data)
参数解释,后续补上. # -*- coding: utf-8 -*- """ ############################################## ...
- Lua中的模块与module函数详解
很快就要开始介绍Lua里的“面向对象”了,在此之前,我们先来了解一下Lua的模块. 1.编写一个简单的模块 Lua的模块是什么东西呢?通常我们可以理解为是一个table,这个table里有一些变量.一 ...
- sklearn 中 make_blobs模块
# 生成用于聚类的各向同性高斯blobsklearn.datasets.make_blobs(n_samples = 100,n_features = 2,center = 3,cluster_std ...
- sklearn 中 make_blobs模块使用
sklearn.datasets.make_blobs(n_samples=100, n_features=2, centers=3, cluster_std=1.0, center_box=(-10 ...
- 学习JQuery中文文档之map()函数和get()函数
今天学到一个新的函数map(). map(callback) 官方概述: 将一组元素转换成其他数组(不论是否是元素数组) 你可以用这个函数来建立一个列表,不论是值.属性还是CSS样式,或者其他特别形式 ...
- 学习JQuery中文文档之get()函数
前端大神群的群主告诉我们:学习一个框架最好的方法是去把官方文档研究一遍. 现在正式开始我的前端之路,从JQuery的中文文档开始. 基础不牢固,看起来有点慢,但是我会一直坚持下去的.把遇到的问题都记录 ...
随机推荐
- 常用java命令
javap 反编译 javap xxx.class 查看大概 javap -v -p xxx.class 查看详细 jps 查看有哪些java进程 jinfo 查看或设置java进程的 vm 参数,只 ...
- Linux用户创建/磁盘挂载相关命令
命令 作用 常用参数说明 groupadd 增加用户组 -g指定组id groupmod 修饰用户组 参数和groupadd类似 groupdel 删除用户组 直接组名没参数 useradd 增加用户 ...
- oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数等
oracle如何计算两个日期的相差天数.月数.年数.小时数.分钟数.秒数 1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('20 ...
- css3 居中(推荐弹性盒模型方式)
参考 http://www.zhihu.com/question/20774514 http://caibaojian.com/demo/flexbox/align-items.html 例子:ht ...
- node编译C++,比如安装node-gyp失败的问题
遇到的这个问题是很多需要编译才能运行的node模块共有的问题. npm i -g windows-build-tools 首先以管理员身份打开命令行,然后在命令行下执行这一行命令. 然后重新运行你刚才 ...
- nexus下载远程maven中央仓库的解决方案
参考:http://www.linuxidc.com/Linux/2014-03/98708.htm https://repo.maven.apache.org/maven2/.index/ 下载这两 ...
- day31 锁 队列 前面课程重点总结
今日内容: 1.进程的其他方法 2.僵尸进程和孤儿进程(了解) 3.验证进程之间是空间隔离的 4.守护进程 5.进程锁 重点(又叫同步锁,互斥锁) 6.进程队列(重点) Queue 7.生产者消费者 ...
- 【转】caffe数据层及参数
原文: 要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个层(layer)构成,每一层又由许多参数组成.所有的参数都定义在caffe.proto ...
- 【转】Java迭代:Iterator和Iterable接口
Java迭代 : Iterator和Iterable接口 从英文意思去理解 Iterable :故名思议,实现了这个接口的集合对象支持迭代,是可迭代的.able结尾的表示 能...样,可以做.... ...
- Date与时间戳的相互转换(Java)
1.Date对象转换为时间戳 Date date = new Date(); long times = date.getTime(); System.out.println(times); 效果如 ...