前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第 04 课:监控表现和提前停止

第 04 课:监控表现和提前停止

作者头像
PM小王
发布2019-07-02 17:12:46
5020
发布2019-07-02 17:12:46
举报
文章被收录于专栏:程序员小王程序员小王

前文回顾:

在Python中开始使用 XGBoost的7步迷你课程

第 01 课:梯度提升简介

第 02 课:XGBoost 简介

第 03 课:开发您的第一个 XGBoost 模型

XGBoost 模型可以在训练期间评估和报告模型的测试集上的表现。 它通过在训练模型和指定详细输出(verbose=True)时调用 **model.fit()**时指定测试数据集和评估指标来支持此功能。 例如,我们可以在训练XGBoost模型时报告独立测试集(eval_set )上的二进制分类错误率(错误),如下所示:

代码语言:javascript
复制
eval_set = [(X_test, y_test)]
model.fit(X_train, y_train, eval_metric="error", eval_set=eval_set, verbose=True)

使用此配置运行模型将在添加每个树后报告模型的表现。例如:

代码语言:javascript
复制
...
[89] validation_0-error:0.204724
[90] validation_0-error:0.208661

一旦没有对模型进行进一步改进,我们就可以使用此评估来停止训练。 我们可以通过在调用**model.fit()**时将early_stopping_rounds 参数设置为在停止训练之前验证数据集未见改进的迭代次数来完成此操作。 下面提供了使用 Pima Indians Onset of Diabetes 数据集的完整示例。

代码语言:javascript
复制
# exmaple of early stopping
from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# load data
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",")
# split data into X and y
X = dataset[:,0:8]
Y = dataset[:,8]
# split data into train and test sets
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)
# fit model on training data
model = XGBClassifier()
eval_set = [(X_test, y_test)]
model.fit(X_train, y_train, early_stopping_rounds=10, eval_metric="logloss", eval_set=eval_set, verbose=True)
# make predictions for test data
y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
# evaluate predictions
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))

在下一课中,我们将研究如何使用 XGBoost 计算特征的重要性。

在看和转发

都是一种支持

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小王 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在看和转发
  • 都是一种支持
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档