找回密码
 立即注册
问题
我正在尝试使用 for 循环更新我的分类器函数,但是“.I”不适用。
  1. clf = XGBClassifier(base_score=None, booster=None, colsample_bylevel=None,
  2.               colsample_bynode=None, colsample_bytree=0.5, gamma=0.1,
  3.               gpu_id=None, importance_type='gain', interaction_constraints=None,
  4.               learning_rate=101, max_delta_step=None, max_depth=2,
  5.               min_child_weight=3, missing=nan, monotone_constraints=None,
  6.               n_estimators=100, n_jobs=None, num_parallel_tree=None,
  7.               objective='binary:logistic', random_state=None, reg_alpha=None,
  8.               reg_lambda=None, scale_pos_weight=None, subsample=None,
  9.               tree_method=None, validate_parameters=False, verbosity=None)


  10. d = {'learning_rate': [0.2], 'colsample_bytree': [0.5],'gamma' : [0.3] }
  11. m = pd.DataFrame(data=d)

  12. parameters = ['learning_rate', 'colsample_bytree', 'gamma']

  13. for i  in parameters:
  14.     clf.i = m[i][0]
复制代码

我的期望:

使用新值切换参数。

回答
您可以尝试使用 setattr 。

https://docs.python.org/3/library/functions.html#setattr

在您的示例中,您将使用:
  1. for i  in parameters:
  2.     setattr(clf, i, m[i][0])
复制代码






上一篇:在延迟加载的模块中使用角度组件
下一篇:导入json ES6 Node.js 中的扩展引发错误