【Dask机器学习实例(8)】使用Dask并行化训练XGBoost:Dask-XGBoost的使用


原文来自: Dask Examples

XGBoost可以通过Dask来并行化训练。

XGBoost提供了一个强大的预测框架,在Kaggle竞赛和工业界都表现不错,它具有很好的性能和易解释性。(例如,很容易从XGBoost模型中找到重要的特征。)

1.准备Dask

启动Dask client,可以通过Dashboard来查看各种性能指标。

from dask.distributed import Client

client = Client(n_workers=4, threads_per_worker=1)
client

在这里插入图片描述

2.创建数据

首先创建一组合成数据。(20个特征,10万条)

#没有安装dask-ml的执行安装命令!pip install dask-ml
from dask_ml.datasets import make_classification

X, y = make_classification(n_samples=100000, n_features=20,
                           chunks=1000, n_informative=4,
                           random_state=0)
X

在这里插入图片描述
Dask-XGBoost可以使用Dask arrays和Dask dataframes数据,具体创建方法请参见相关文档。

3.分割训练/测试集

from dask_ml.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15)

4.训练Dask-XGBoost

import dask
import xgboost
import dask_xgboost

dask-xgboost是对xgboost的一个包装,使用Dask来设置XGBoost,提供数据并在后台使用Dask提供的worker来训练XGBoost。

params = {'objective': 'binary:logistic',
          'max_depth': 4, 'eta': 0.01, 'subsample': 0.5,
          'min_child_weight': 0.5}

bst = dask_xgboost.train(client, params, X_train, y_train, num_boost_round=10)

5.结果可视化

上面获得的bst是一个xgboost.Booster对象。

bst

在这里插入图片描述
可以使用XGBoost中的一些函数。

6.绘制特征重要性

%matplotlib inline
import matplotlib.pyplot as plt

ax = xgboost.plot_importance(bst, height=0.8, max_num_features=9)
ax.grid(False, axis="y")
ax.set_title('Estimated feature importance')
plt.show()

在这里插入图片描述

绘制ROC曲线

用ROC曲线来度量分类器的好坏,下面给出ROC曲线的绘制方法。

y_hat = dask_xgboost.predict(client, bst, X_test).persist()
y_hat

在这里插入图片描述

from sklearn.metrics import roc_curve

y_test, y_hat = dask.compute(y_test, y_hat)
fpr, tpr, _ = roc_curve(y_test, y_hat)
from sklearn.metrics import auc

fig, ax = plt.subplots(figsize=(5, 5))
ax.plot(fpr, tpr, lw=3,
        label='ROC Curve (area = {:.2f})'.format(auc(fpr, tpr)))
ax.plot([0, 1], [0, 1], 'k--', lw=2)
ax.set(
    xlim=(0, 1),
    ylim=(0, 1),
    title="ROC Curve",
    xlabel="False Positive Rate",
    ylabel="True Positive Rate",
)
ax.legend();
plt.show()

在这里插入图片描述

ROC曲线,通过曲线左上方的面积来判断分类器的表现。曲线越往上弯曲越好,虚线表示的是随机分类器。

AUC面积,这里的AUC=0.77,表示分类器预测概率。

更多参考资料

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值