[软件设计/软件工程] 有没有办法使用“点调用”?在 foo 循环中?

[复制链接]
发表于 2022-5-3 10:54:16
问题
我正在尝试使用 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 中的扩展引发错误

使用道具 举报

Archiver|手机版|小黑屋|吾爱开源 |网站地图

Copyright 2011 - 2012 Lnqq.NET.All Rights Reserved( ICP备案粤ICP备14042591号-1粤ICP14042591号 )

关于本站 - 版权申明 - 侵删联系 - Ln Studio! - 广告联系

本站资源来自互联网,仅供用户测试使用,相关版权归原作者所有

快速回复 返回顶部 返回列表