Преобразование строки Python в объект классификатора sklearn - PullRequest
0 голосов
/ 16 мая 2018

Если у меня есть строка:

"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() -> см. эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...