首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过xgboost寻找最优n_estimators的误差

通过xgboost寻找最优n_estimators的误差
EN

Stack Overflow用户
提问于 2022-05-28 13:47:18
回答 1查看 99关注 0票数 0

这里的初学者。我正在尝试使用xgboost找到最佳数量的n_estimators。

但是,我得到了这一错误

代码语言:javascript
复制
diabetes.head() #this is a toy dataset in sklearn.datasets.

diabetes.head()

代码语言:javascript
复制
x=diabetes.drop('y',axis=1).values
y=diabetes.y.values

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=16,test_size=0.25)

import xgboost as xgb
xgbmodel=xgb.XGBRegressor(objective="reg:squarederror",eval_metric='rmse',early_stopping_rounds=10,n_estimators=1000,random_state=16)
xgbmodel.fit(x_train,y_train,eval_set=[x_test,y_test])

我认为问题在于:

eval_set=x_test,y_test

我再次检查了sklearn中的糖尿病数据集是否可以用于回归,我想知道我的错误是否在eval_metric方法中。

完全错误在这里:

代码语言:javascript
复制
ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_10180/532743731.py in <module>
      4 import xgboost as xgb
      5 xgbmodel=xgb.XGBRegressor(objective="reg:squarederror",eval_metric='rmse',early_stopping_rounds=10,n_estimators=1000,random_state=16)
----> 6 xgbmodel.fit(x_train,y_train,eval_set=[x_test,y_test])

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\core.py in inner_f(*args, **kwargs)
    530         for k, arg in zip(sig.parameters, args):
    531             kwargs[k] = arg
--> 532         return f(**kwargs)
    533 
    534     return inner_f

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\sklearn.py in fit(self, X, y, sample_weight, base_margin, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, base_margin_eval_set, feature_weights, callbacks)
    929         """
    930         evals_result: TrainingCallback.EvalsLog = {}
--> 931         train_dmatrix, evals = _wrap_evaluation_matrices(
    932             missing=self.missing,
    933             X=X,

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\sklearn.py in _wrap_evaluation_matrices(missing, X, y, group, qid, sample_weight, base_margin, feature_weights, eval_set, sample_weight_eval_set, base_margin_eval_set, eval_group, eval_qid, create_dmatrix, enable_categorical)
    434 
    435         evals = []
--> 436         for i, (valid_X, valid_y) in enumerate(eval_set):
    437             # Skip the duplicated entry.
    438             if all(

ValueError: too many values to unpack (expected 2)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-28 19:32:22

是的,它必须是元组,参见下面,您的x_test,y_test应该用圆括号括起来。

代码语言:javascript
复制
eval_setparam = [(self.X_valid, self.y_valid)]
        
xg_model.fit(self.X_train, self.y_train,  
                     eval_set = eval_setparam,
                     verbose=False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72416187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档