基于字符串导入模块

Import module based on string

我得到一个字符串 (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 - 但没有找到适合我的情况的好方法。

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()