Модуль импорта на основе строки - PullRequest
0 голосов
/ 06 мая 2020

Я получаю строку (имя_модели), указывающую, какую модель следует использовать, например 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 - но не нашел подходящего способа использовать его в моем случае.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Ну, я нашел кое-что, что работает, не знаю, лучшее ли это или самое чистое решение, но лучше, чем if...else:

linear_model=getattr(__import__('sklearn'),'linear_model')
curr_method=getattr(linear_model,model_name)
model=curr_method()
0 голосов
/ 06 мая 2020

Python модулей хранят все свои атрибуты в __dict__. Вы можете просто получить доступ к значению, используя это.

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