52ky 发表于 2022-5-3 10:54:16

有没有办法使用“点调用”?在 foo 循环中?

问题
我正在尝试使用 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': , 'colsample_bytree': ,'gamma' : }
m = pd.DataFrame(data=d)

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

for iin parameters:
    clf.i = m
我的期望:

使用新值切换参数。

回答
您可以尝试使用 setattr 。

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

在您的示例中,您将使用:
for iin parameters:
    setattr(clf, i, m)



页: [1]
查看完整版本: 有没有办法使用“点调用”?在 foo 循环中?