使用字典键访问对象属性
Accessing object attributes using dictionary keys
我正在尝试将模型的超参数存储在数据框中,其中要存储的确切参数存储为字典的键。
键的值用于在循环的每次迭代中进行网格搜索以获得最佳值。
例如,超参数字典可能如下所示:
hyperParams = {'C':[.0, 0.1, 1.], 'epsilon':[0., 0.1, 0.2]}
存储值的数据框元素是这样生成的:
for h in hyperParams.keys() :
df[str(h)] = np.nan
如果参数是固定的,存储特定值的代码将如下所示:
df.loc[row_index, 'C'] = regressor.C
但是参数(回归器的属性)存储为键。
我试过这个:
for h in hyperParams.keys() :
df.loc[row_index, str(h)] = regressor.h
还有这个:
for h in hyperParams.keys() :
df.loc[row_index, str(h)] = regressor.str(h)
然而,两者都不被识别为回归对象的属性。
有没有办法从字典的键中调用这个对象的属性?
您可以使用 Python 的 built-in getattr
函数。 getattr
函数的参数应该是对象和要从对象中获取的属性的字符串值。所以在你的情况下你可以做 getattr(regressor, h)
.
我正在尝试将模型的超参数存储在数据框中,其中要存储的确切参数存储为字典的键。
键的值用于在循环的每次迭代中进行网格搜索以获得最佳值。
例如,超参数字典可能如下所示:
hyperParams = {'C':[.0, 0.1, 1.], 'epsilon':[0., 0.1, 0.2]}
存储值的数据框元素是这样生成的:
for h in hyperParams.keys() :
df[str(h)] = np.nan
如果参数是固定的,存储特定值的代码将如下所示:
df.loc[row_index, 'C'] = regressor.C
但是参数(回归器的属性)存储为键。
我试过这个:
for h in hyperParams.keys() :
df.loc[row_index, str(h)] = regressor.h
还有这个:
for h in hyperParams.keys() :
df.loc[row_index, str(h)] = regressor.str(h)
然而,两者都不被识别为回归对象的属性。
有没有办法从字典的键中调用这个对象的属性?
您可以使用 Python 的 built-in getattr
函数。 getattr
函数的参数应该是对象和要从对象中获取的属性的字符串值。所以在你的情况下你可以做 getattr(regressor, h)
.