【问题标题】:How to convert a string into the literal meaning?如何将字符串转换为字面意思?
【发布时间】:2022-01-24 16:48:56
【问题描述】:

我想写一个通用函数,可以接受不同的机器学习算法及其参数并初始化模型。

我写道:

def create_model(model_name,kernel='rbf',C=1.0):
      clf = model_name()
print(create_model('SVC'))

错误是:

    clf = model_name()
TypeError: 'str' object is not callable

我了解错误是您不能将字符串 ('SVC') 作为模型对象。然后我尝试添加evaluate(model_name)() 将字符串转换为对象,但得到了name 'evaluate' is not defined

有人可以告诉我正确的方法吗?我想这样做,然后我可以向函数添加一组可选参数,然后例如在同一函数中用逻辑回归替换 SVC。

【问题讨论】:

  • 一开始就不要把它变成字符串。试试create_model(SVC)。 IE。传递实际的模型类对象,而不是模型的 name

标签: python machine-learning


【解决方案1】:

如果您不确定是否可以信任为model_name 传递的字符串,请创建一个将可接受的字符串值映射到其类的字典。

models = [modelA, modelB, modelC]
name2model = {model.__name__: model for model in models}

def create_model(model_name, *args, **kwargs):
      return name2model[model_name](*args, **kwargs)

edit:这当然假设您必须首先处理字符串名称,例如从用户输入。否则,请参阅 Samwises 的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多