sklearn中的xgboost_Xgboost简易入门教程

论坛 期权论坛     
选择匿名的用户   2021-5-22 16:55   315   0
<div style="font-size:16px;">
<p> 最近准备研究一下信贷风控中机器学习模型评分卡的制作。信贷评分卡分为两种,一种是用逻辑回归,称为评分卡;一种是用集成学习算法,称为机器学习模型。逻辑回归算法相对简单,但是解释性要求高;机器学习模型理论上效果要更好一点,但是无法解释,而且模型容易不稳定。于是找了一下网上能找到的关于机器学习模型做评分卡的案例,主要有拍拍贷比赛实例、金融风控实战、kaggle上的Home Credit Default Risk比赛,附上相应的课程或比赛链接。</p>
<ol start="1"><li>拍拍贷比赛案例<br>https://www.bilibili.com/video/BV1NE41157Ag?p&#61;29</li><li>金融风控实战<br>https://www.bilibili.com/video/BV18J411R7ei?p&#61;11</li><li>Kaggle案例<br>https://www.kaggle.com/fanzzz/understand-variables-in-chinese</li></ol>
<p> 本篇文章是一篇简单的xgboost快速上手的教程,不涉及算法推导,帮助自己回顾一下xgboost的基本用法,后续会再复习一下算法的推导过程以及优缺点。</p>
<h3 class="pgc-h-arrow-right">一、读取数据并指定参数建模</h3>
<p>xgboost读取数据有两种方式:</p>
<ol start="1"><li>使用xgboost自带的数据集格式 &#43; xgboost自带的建模方式</li></ol>
<blockquote>
  <p>把数据读取成xgb.DMatrix格式(libsvm/dataframe.values给定X和Y)</p>
  <p>准备好一个watch_list(观测和评估的数据集)</p>
  <p>xgb.train(dtrain)</p>
  <p>xgb.predict(dtest)</p>
</blockquote>
<ol start="2"><li>使用pandas的DataFrame格式 &#43; xgboost的sklearn接口</li></ol>
<blockquote>
  <p>estimator &#61; xgb.XGBClassifier()/xgb.XGBRegressor()</p>
  <p>estimator.fit(df_train.values, df_target.values) 先看一下第一种方式读取数据和建模的方法。</p>
</blockquote>
<pre class="blockcode"><code>import numpy as npimport pandas as pdimport pickleimport xgboost as xgbfrom sklearn.model_selection import train_test_splitdata &#61; pd.read_csv(&#39;./data/Pima-Indians-Diabetes.csv&#39;)train, test &#61; train_test_split(data)# 转换成Dmatrix格式feature_columns &#61; [&#39;Pregnancies&#39;, &#39;Glucose&#39;, &#39;BloodPressure&#39;, &#39;SkinThickness&#39;, &#39;Insulin&#39;, &#39;BMI&#39;, &#39;DiabetesPedigreeFunction&#39;, &#39;Age&#39;]target_column &#61; &#39;Outcome&#39;# 需要将dataframe格式的数据转化为矩阵形式xgtrain &#61; xgb.DMatrix(train[feature_columns].values, train[target_column].values)xgtest &#61; xgb.DMatrix(test[feature_columns].values, test[target_column].values)#参数设定param &#61; {&#39;max_depth&#39;:5, &#39;eta&#39;:0.1, &#39;silent&#39;:1, &#39;subsample&#39;:0.7, &#39;colsample_bytree&#39;:0.7, &#39;objective&#39;:&#39;binary:logistic&#39; }# 设定watchlist用于查看模型状态watchlist  &#61; [(xgtest,&#39;eval&#39;), (xgtrain,&#39;train&#39;)]num_round &#61; 10bst &#61; xgb.train(param, xgtrain, num_round, watchlist)# 使用模型预测preds &#61; bst.predict(xgtest)# 判断准确率labels &#61; xgtest.get_label()print (&#39;错误类为%f&#39; %        (sum(1 for i in range(len(preds)) if int(preds[i]&gt;0.5)!&#61;labels[i]) /float(len(preds))))# 模型存储bst.save_model(&#39;./model/0002.model&#39;)</code></pre>
<div class="pgc-img">
  <img alt="ec444d5fe6e71f7280ea9a6d2f69a1f4.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-cb723f4fccae04e732c800bc5b56c439.png">
</div>
<p> 第一点就是输入数据形式要转化成矩阵的形式,第二点就是watchlist参数用于查看模型的状态,也就是为了输出eval-error和train-error。然后再解释下几个参数的含义:</p>
<blockquote>
  <p>&#39;max_depth&#39;:设置树的最大深度。默认为6。 &#39;eta&#39;:学习率。默认为0.3。 &#39;silent&#39;:0表示输出信息, 1表示安静模式。默认为0。 &#39;subsample&#39;:观测的子样本的比率,即对总体进行随机抽样的比例。默认为1。 &#39;colsample_bytree &#39;:用于构造每棵树时变量的子样本比率.即特征抽样。默认为1。 &#39;objective&#39;:最小化的损失函数。</p>
</blockquote>
<p> xgboost的参数可以分为三类,通用参数/general parameters, 集成(增强)参数/booster parameters 和 任务参数/task parameters。 以上silent是通用参数,objective是任务参数,其它的都是集成参数。</p>
<div class="pgc-img">
  <img alt="6fa7a7f34a162eaaf6e0b1239a087b49.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-767fd9f918883698d0fb1440227a7b84.png">
</div>
<p> 再来看一下使用sklearn接口进行建模的例子。</p>
<pre class="blockcode"><code>#!/usr/bin/pythonimport warningswarnings.filterwarnings(&#34;ignore&#34;)import numpy as npimport pandas as pdimport pickleimport xgboost as xgbfrom sklearn.model_selection import train_test_splitfrom sklearn.externals import joblibdata &#61; pd.read_csv(&#39;./data/Pima-Indians-Diabetes.csv&#39;)train, test &#61; train_test_split(data)# 取出特征X和目标y的部分feature_columns &#61; [&#39;Pregnancies&#39;, &#39;Glucose&#39;, &#39;BloodPressure&#39;, &#39;SkinThickness&#39;, &#39;Insulin&#39;, &#39;BMI&#39;, &#39;DiabetesPedigreeFunction&#39;, &#39;Age&#39;]target_column &#61;
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP