xgboost 之 eval_metric参数的应用以及构造损失函数的变化情况图

很多人在训练时想查看训练集和验证集情况却不知如何操作。本文介绍了通过xgboost的eval_metric参数输出训练情况的方法,包括在params中设定该参数,应用xgboost.train训练时用evals评估,以及fit训练时的不同参数设置,还提到用fit训练可打印显示训练变化。

在训练的时候很多人想查看训练集和验证集的训练情况,但不知道如何打印出来或者形成图

现在我教教大家,查看了xgboost 的api 确实有一个eval_metric参数可以输出训练情况

1.首先在params中设定eval_metric,记住这个属性和lightgbm不一样lightgbm是用metric={“logloss,"auc”}这种map形式,xgboost是应用list形式的,eval_metric=["auc",“rmse”,"logloss"]

2.应用xgboost.train进行训练的话,应用evals进行评估操作。

#测试集的训练数据
其中data的数据是从pd.read_csv读取的
y_train =data.label #label标签自定义
x_train=data.drop(labels="label",axis=1)
train_x, valid_x, train_y, valid_y = train_test_split(x_train, y_train, test_size=0.2)  # 分训练集和验证集dtrain = xgb.DMatrix(train_x, label=train_y)
dtest = xgb.DMatrix(valid_x,label=valid_y)
model = xgb.train(params, xgb.DMatrix(train_x,train_y),evals=[(dtrain,'train'),(dtest,'vaild')],num_boost_round=500)

3.训练结果如下

 

4.如果你是应用fit进行训练的话,参数就不一样了,如下

 model1=XGBClassifier(**params)
 train = [train_x, train_y]
 eval = [x_test, y_test1]
 model2=model1.fit(train_x,train_y,eval_metric=['logloss','auc','error'],eval_set=[train,eval])

5.打印显示训练时的变化情况(必须用fit的方法训练才能查看到)自己现在的理解

plot_logloss(model2)

# 画出损失函数的变化情况
def plot_logloss(model):
    results = model.evals_result_
    print(results)
    epochs = len(results['validation_0']['logloss'])
    x_axis = range(0, epochs)
    print(epochs)
    # plot log loss
    fig, ax = plt.subplots()
    ax.plot(x_axis, results['validation_0']['logloss'], label='Train')
    print(results['validation_1']['logloss'])
    ax.plot(x_axis, results['validation_1']['logloss'], label='Test')
    ax.legend()
    plt.ylabel('Log Loss')
    plt.title('XGDboost Log Loss')
    plt.show()
    # plot classification error
    fig, ax = plt.subplots()
    ax.plot(x_axis, results['validation_0']['error'], label='Train')
    ax.plot(x_axis, results['validation_1']['error'], label='Test')
    ax.legend()
    plt.ylabel('Classification Error')
    plt.title('XGBoostClassification Error')
    plt.show()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值