基于字符串的导入模块

2024-10-01 04:53:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一个字符串(model_name),它指示应该使用哪个模型, 例如LinearRegressionRANSACRegression

例如,如果model_name=="LinearRegression",我需要导入此模块并将其分配给模型,如下所示:

from sklearn.linear_model import LinearRegression 
model=LinearRegression()

如果model_name=="RANSACRegression"相同:

from sklearn.linear_model import RANSACRegression 
model=RANSACRegression()

可以假设我得到的所有模型都在sklearn.linear_model

有没有一种很好的方法来分配模型,而不使用丑陋的if...else

我已经研究了importlib,但是没有找到一个好的方法在我的案例中使用它


Tags: 模块方法字符串namefrom模型importmodel
2条回答

Python模块将其所有属性存储在__dict__中。您可以简单地使用它访问值

model = __import__("sklearn.linear_model").__dict__[model_name]

嗯,我发现了一些有效的方法,不知道它是最好还是最干净的解决方案,但比if...else更好:

linear_model=getattr(__import__('sklearn'),'linear_model')
curr_method=getattr(linear_model,model_name)
model=curr_method()

相关问题 更多 >