Если у меня есть строка:
"ExtraTreesClassifier(bootstrap=False, class_weight=None, max_depth=None, max_features=11, min_samples_leaf=2, min_samples_split=8, n_estimators=20, criterion="gini", n_jobs=4, random_state=12)"
Каков наилучший способ преобразовать ее в классификатор sklearn, чтобы я мог подогнать к нему свой набор данных?
Желаемый результат:
<class 'sklearn.ensemble.forest.ExtraTreesClassifier'>
РЕДАКТИРОВАТЬ
В моем случае строка не заключена в дефисы (понимаю, что без переносов я смогу вызывать функцию sklearn), скореепеременная имеет тип string.
РЕШЕНИЕ
Мне удалось решить эту проблему, сначала извлекая параметры в словарную форму, а затем помещая их в оценщик sklearn:
import ast
ExtraTreesClassifier(**ast.literal_eval("{"+i.split("(", 1)[1][:-1].replace("=",":")+"}"))
i.split("(", 1)[1][:-1]
удаляет "ExtraTreesClassifier("
и ")"
из строки.
Чтобы отформатировать строку в том же синтаксисе, что и в словаре, используйте: .replace("=",":")
, затем заключите в скобки "{"
Поскольку это все еще строковое представление словаря, для передачи его в качестве параметровдля оценки sklearn это необходимо обернуть вокруг словаря: **ast.literal_eval()
-> см. эту ссылку