问题
我正在尝试使用 for 循环更新我的分类器函数,但是“.I”不适用。
- clf = XGBClassifier(base_score=None, booster=None, colsample_bylevel=None,
- colsample_bynode=None, colsample_bytree=0.5, gamma=0.1,
- gpu_id=None, importance_type='gain', interaction_constraints=None,
- learning_rate=101, max_delta_step=None, max_depth=2,
- min_child_weight=3, missing=nan, monotone_constraints=None,
- n_estimators=100, n_jobs=None, num_parallel_tree=None,
- objective='binary:logistic', random_state=None, reg_alpha=None,
- reg_lambda=None, scale_pos_weight=None, subsample=None,
- tree_method=None, validate_parameters=False, verbosity=None)
- d = {'learning_rate': [0.2], 'colsample_bytree': [0.5],'gamma' : [0.3] }
- m = pd.DataFrame(data=d)
- parameters = ['learning_rate', 'colsample_bytree', 'gamma']
- for i in parameters:
- clf.i = m[i][0]
复制代码
我的期望:
使用新值切换参数。
回答
您可以尝试使用 setattr 。
https://docs.python.org/3/library/functions.html#setattr
在您的示例中,您将使用:
- for i in parameters:
- setattr(clf, i, m[i][0])
复制代码
|