微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Suggest_int() 缺少 1 个必需的位置参数:Optuna 上的“高”错误

如何解决Suggest_int() 缺少 1 个必需的位置参数:Optuna 上的“高”错误

我有以下 Optuna 代码来对 Xgboost 分类器进行超参数调整。

import optuna 
from optuna import Trial,visualization
from optuna.samplers import TPESampler
from xgboost import XGBClassifier

def objective(trial: Trial,X_train,y_train,X_test,y_test):
    
    param = {
            "n_estimators" : Trial.suggest_int("n_estimators",1000),'max_depth':Trial.suggest_int('max_depth',2,25),'reg_alpha':Trial.suggest_int('reg_alpha',5),'reg_lambda':Trial.suggest_int('reg_lambda','min_child_weight':Trial.suggest_int('min_child_weight','gamma':Trial.suggest_int('gamma','learning_rate':Trial.suggest_loguniform('learning_rate',0.005,0.5),'colsample_bytree':Trial.suggest_discrete_uniform('colsample_bytree',0.1,1,0.01),'nthread' : -1
            }
    
    model = XGBClassifier(**param)

    model.fit(X_train,y_train)

    return cross_val_score(model,y_test).mean()

study = optuna.create_study(direction='maximize',sampler=TPESampler())
study.optimize(lambda trial : objective(trial,y_test),n_trials= 50)

它不断给我以下错误

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\envs\Janestreet\lib\site-packages\optuna\_optimize.py",line 217,in _run_trial
    value_or_values = func(trial)
  File "<ipython-input-74-c1454daaa53e>",line 2,in <lambda>
    study.optimize(lambda trial : objective(trial,n_trials= 50)
  File "<ipython-input-73-4438e1db47ef>",line 4,in objective
    "n_estimators" : Trial.suggest_int("n_estimators",TypeError: suggest_int() missing 1 required positional argument: 'high'

非常感谢

解决方法

问题是您在类 suggest_int 上调用 Trial,就好像它是类/静态方法一样。 suggest_int 是常规方法,应在对象上调用,在本例中为 trial。将 Trial.suggest_int 更改为 trial.suggest_int 应该可以消除错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。