【集成学习】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 # 邮箱:[email protected]
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 “”"
复制代码

你可能感兴趣的:(数据挖掘/机器学习)