python_xgboost例03_evals_result评估结果

%matplotlib inline
本专栏所有例题数据放在 网址[https://download.youkuaiyun.com/download/u012338969/85439555(https://download.youkuaiyun.com/download/u012338969/85439555)

This script demonstrate how to access the eval metrics

import os
import xgboost as xgb
dtrain = xgb.DMatrix( './data/agaricus.txt.train')
dtest = xgb.DMatrix( './data/agaricus.txt.test')
param = [('max_depth', 2), ('objective', 'binary:logistic'), ('eval_metric', 'logloss'), ('eval_metric', 'error')]

num_round = 10
watchlist = [(dtest,'eval'), (dtrain,'train')]

evals_result = {}
bst = xgb.train(param, dtrain, num_round, watchlist, evals_result=evals_result)
[0]	eval-logloss:0.48039	eval-error:0.04283	train-logloss:0.48254	train-error:0.04652
[1]	eval-logloss:0.35776	eval-error:0.04283	train-logloss:0.35954	train-error:0.04652
[2]	eval-logloss:0.28009	eval-error:0.02483	train-logloss:0.27993	train-error:0.02334
[3]	eval-logloss:0.21606	eval-error:0.04035	train-logloss:0.21860	train-error:0.04161
[4]	eval-logloss:0.17013	eval-error:0.01924	train-logloss:0.17063	train-error:0.01735
[5]	eval-logloss:0.14026	eval-error:0.02173	train-logloss:0.13910	train-error:0.02226
[6]	eval-logloss:0.12097	eval-error:0.01552	train-logloss:0.11891	train-error:0.01336
[7]	eval-logloss:0.10550	eval-error:0.02731	train-logloss:0.10227	train-error:0.02150
[8]	eval-logloss:0.09550	eval-error:0.02731	train-logloss:0.09150	train-error:0.02150
[9]	eval-logloss:0.08723	eval-error:0.02731	train-logloss:0.08313	train-error:0.02150


D:\d_programe\Anaconda3\lib\site-packages\xgboost\core.py:525: FutureWarning: Pass `evals` as keyword args.  Passing these as positional arguments will be considered as error in future releases.
  warnings.warn(
print('Access logloss metric directly from evals_result:')
print(evals_result['eval']['logloss'])
Access logloss metric directly from evals_result:
[0.4803859960359494, 0.35775544743668136, 0.28009184384701197, 0.21605562400662479, 0.1701263918926966, 0.14025616379423514, 0.12096623357207341, 0.10550202664004062, 0.09549925424283444, 0.08723436453808064]
print('')
print('Access metrics through a loop:')
for e_name, e_mtrs in evals_result.items():
    print('- {}'.format(e_name))
    for e_mtr_name, e_mtr_vals in e_mtrs.items():
        print('   - {}'.format(e_mtr_name))
        print('      - {}'.format(e_mtr_vals))

print('')
print('Access complete dictionary:')
print(evals_result)
Access metrics through a loop:
- eval
   - logloss
      - [0.4803859960359494, 0.35775544743668136, 0.28009184384701197, 0.21605562400662479, 0.1701263918926966, 0.14025616379423514, 0.12096623357207341, 0.10550202664004062, 0.09549925424283444, 0.08723436453808064]
   - error
      - [0.04283054003724395, 0.04283054003724395, 0.02482929857231533, 0.04034761018001241, 0.01924270639354438, 0.02172563625077592, 0.01551831160769708, 0.02731222842954686, 0.02731222842954686, 0.02731222842954686]
- train
   - logloss
      - [0.4825405066196003, 0.3595360331769255, 0.27993453837989496, 0.2185990637634164, 0.17062663876404507, 0.13910131798203448, 0.11891032012147178, 0.10226806316741524, 0.09149656920272982, 0.08312625405458002]
   - error
      - [0.04652233993551359, 0.04652233993551359, 0.02333793950560418, 0.04160908951328113, 0.01734991555350837, 0.02226316597574083, 0.0133578995854445, 0.02149547059726701, 0.02149547059726701, 0.02149547059726701]

Access complete dictionary:
{'eval': OrderedDict([('logloss', [0.4803859960359494, 0.35775544743668136, 0.28009184384701197, 0.21605562400662479, 0.1701263918926966, 0.14025616379423514, 0.12096623357207341, 0.10550202664004062, 0.09549925424283444, 0.08723436453808064]), ('error', [0.04283054003724395, 0.04283054003724395, 0.02482929857231533, 0.04034761018001241, 0.01924270639354438, 0.02172563625077592, 0.01551831160769708, 0.02731222842954686, 0.02731222842954686, 0.02731222842954686])]), 'train': OrderedDict([('logloss', [0.4825405066196003, 0.3595360331769255, 0.27993453837989496, 0.2185990637634164, 0.17062663876404507, 0.13910131798203448, 0.11891032012147178, 0.10226806316741524, 0.09149656920272982, 0.08312625405458002]), ('error', [0.04652233993551359, 0.04652233993551359, 0.02333793950560418, 0.04160908951328113, 0.01734991555350837, 0.02226316597574083, 0.0133578995854445, 0.02149547059726701, 0.02149547059726701, 0.02149547059726701])])}

XGBoost中,`evals_result_`属性是用于存储模型在训练过程中的评估结果的。然而,当你使用`XGBClassifier`对象时,可能会遇到`AttributeError: 'XGBClassifier' object has no attribute 'evals_result_'`的错误。 这个错误通常是由于以下两个原因引起的: 1. 使用了错误的训练方法:你可能使用了`train`方法而不是`fit`方法来训练模型。只有使用`fit`方法训练的模型才会生成`evals_result_`属性。确保使用正确的方法来训练模型。 2. 使用了错误的对象:你可能错误地创建了一个`XGBClassifier`对象的实,而不是`XGBRegressor`对象的实。`XGBClassifier`是用于分类问题的模型,而`XGBRegressor`是用于回归问题的模型。确保你使用了正确的对象来创建模型。 解决这个问题的方法是: 1. 使用`fit`方法而不是`train`方法来训练模型。 2. 确保你创建了一个`XGBClassifier`对象的实而不是`XGBRegressor`对象的实。 下面是一个示代码,演示了如何使用`fit`方法来训练`XGBClassifier`模型,并且正确地获取`evals_result_`属性: ```python from xgboost import XGBClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 加载数据集 iris = load_iris() X, y = iris.data, iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建XGBClassifier对象 model = XGBClassifier() # 使用fit方法训练模型 model.fit(X_train, y_train) # 获取evals_result_属性 evals_result = model.evals_result_ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值