Xgboost简易入门教程

本文是Xgboost的简易教程,介绍了如何使用xgboost进行数据建模,包括使用xgboost自带数据格式和sklearn接口,参数设置如max_depth、eta等,并讨论了交叉验证、自定义损失函数、特征重要性以及早停参数的运用。同时,展示了在分类和回归问题上的应用,并通过网格搜索寻找最优超参数。
摘要由CSDN通过智能技术生成

  最近准备研究一下信贷风控中机器学习模型评分卡的制作。信贷评分卡分为两种,一种是用逻辑回归,称为评分卡;一种是用集成学习算法,称为机器学习模型。逻辑回归算法相对简单,但是解释性要求高;机器学习模型理论上效果要更好一点,但是无法解释,而且模型容易不稳定。于是找了一下网上能找到的关于机器学习模型做评分卡的案例,主要有拍拍贷比赛实例、金融风控实战、kaggle上的Home Credit Default Risk比赛,附上相应的课程或比赛链接。

  1. 拍拍贷比赛案例
    https://www.bilibili.com/video/BV1NE41157Ag?p=29
  2. 金融风控实战
    https://www.bilibili.com/video/BV18J411R7ei?p=11
  3. Kaggle案例
    https://www.kaggle.com/fanzzz/understand-variables-in-chinese

  本篇文章是一篇简单的xgboost快速上手的教程,不涉及算法推导,帮助自己回顾一下xgboost的基本用法,后续会再复习一下算法的推导过程以及优缺点。

一、读取数据并指定参数建模

xgboost读取数据有两种方式:

  1. 使用xgboost自带的数据集格式 + xgboost自带的建模方式
  • 把数据读取成xgb.DMatrix格式(libsvm/dataframe.values给定X和Y)
  • 准备好一个watch_list(观测和评估的数据集)
  • xgb.train(dtrain)
  • xgb.predict(dtest)
  1. 使用pandas的DataFrame格式 + xgboost的sklearn接口
  • estimator = xgb.XGBClassifier()/xgb.XGBRegressor()
  • estimator.fit(df_train.values, df_target.values)
    先看一下第一种方式读取数据和建模的方法。
import numpy as np
import pandas as pd
import pickle
import xgboost as xgb
from sklearn.model_selection import train_test_split

data = pd.read_csv('./data/Pima-Indians-Diabetes.csv')

train, test = train_test_split(data)

# 转换成Dmatrix格式
feature_columns = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age']
target_column = 'Outcome'
# 需要将dataframe格式的数据转化为矩阵形式
xgtrain = xgb.DMatrix(train[feature_columns].values, train[target_column].values)
xgtest = xgb.DMatrix(test[feature_columns].values, test[target_column].values)

#参数设定
param = {
   'max_depth':5, 'eta':0.1, 'silent':1, 'subsample':0.7, 'colsample_bytree':0.7, 'objective':'binary:logistic' }

# 设定watchlist用于查看模型状态
watchlist  = [(xgtest,'eval'), (xgtrain,'train')]
num_round = 10
bst = xgb.train(param, xgtrain, num_round, watchlist)

# 使用模型预测
preds = bst.predict(xgtest)

# 判断准确率
labels = xgtest.get_label()
print ('错误类为%f' % \
       (sum(1 for i in range(len(preds)) if int(preds[i]>0.5)!=labels[i]) /float(len(preds))))

# 模型存储
bst.save_model('./model/0002.model')

  第一点就是输入数据形式要转化成矩阵的形式,第二点就是watchlist参数用于查看模型的状态,也就是为了输出eval-error和train-error。然后再解释下几个参数的含义:

‘max_depth’:设置树的最大深度。默认为6。
‘eta’:学习率。默认为0.3。
‘silent’:0表示输出信息, 1表示安静模式。默认为0。
‘subsample’:观测的子样本的比率,即对总体进行随机抽样的比例。默认为1。
'colsample_bytree ':用于构造每棵树时变量的子样本比率.即特征抽样。默认为1。
‘objective’:最小化的损失函数。

  xgboost的参数可以分为三类,通用参数/general parameters, 集成(增强)参数/booster parameters 和 任务参数/task parameters。
以上silent是通用参数,objective是任务参数,其它的都是集成参数。

  再来看一下使用sklearn接口进行建模的例子。

#!/usr/bin/python
import warnings
warnings.filterwarnings("ignore")
import numpy as np
import pandas as pd
import pickle
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.externals import joblib

data = pd.read_csv
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值