如何从Python配置文件动态调用并分配对应模型的参数网格?
解决动态读取配置中模型参数网格的问题
问题原因
你当前代码中拼接出了参数网格的名称字符串(比如logreg_module_tune_parameter_grid),但错误地直接访问config.param_grid——而你的配置文件里根本没有名为param_grid的变量,只有对应每个模型的带后缀的参数网格变量,所以触发报错。
解决方案
使用Python的getattr()函数,通过动态生成的属性名字符串,从config对象中获取对应的参数网格字典。修改后的代码如下:
class Tune: def __init__(self, dataframe, text_column, target_column_name, date_column, config, model_file # logreg_module or random_forest_module ): if model_file in config.tune_model_selection: self.config = config self.text_column = text_column self.model_type = config.tune_model_type[model_file] self.model_module = importlib.import_module('modules.' + model_file) # 动态生成参数网格的属性名 param_grid_name = model_file + '_tune_parameter_grid' # 通过getattr动态获取config中的对应属性 self.parameter_grid = getattr(config, param_grid_name)
关键说明
getattr(obj, attr_name)函数可以接收一个对象和一个属性名字符串,返回对象中对应名称的属性值,完美适配你这种动态获取属性的场景。- 这里将变量名从
param_grid改为param_grid_name是为了语义更清晰,避免误解。
内容的提问来源于stack exchange,提问作者Arica Christensen
相关产品推荐
相关产品推荐

