基于字符串导入模块
Import module based on string
我得到一个字符串 (model_name) 指示应该使用什么模型,
例如 LinearRegression
或 RANSACRegression
。
例如,如果 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()
我得到一个字符串 (model_name) 指示应该使用什么模型,
例如 LinearRegression
或 RANSACRegression
。
例如,如果 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()