Добавление правильных меток в деревья решений - PullRequest
0 голосов
/ 01 мая 2019

Я использую регрессор случайных лесов в проекте машинного обучения.Чтобы лучше понять логику предсказаний, я хотел бы визуализировать некоторые деревья решений и проверить, какие функции используются, когда.

Для этого я написал следующий код:

from sklearn.tree import export_graphviz
from subprocess import call
from IPython.display import Image

# Select one estimator from the Random Forests
estimator = best_estimators_regr['RandomForestRegressor'][0].estimators_[0]

export_graphviz(estimator, out_file=path+'tree.dot', 
           rounded=True, proportion=False, 
           precision=2, filled=True)
call(['dot', '-Tpng', path+'tree.dot', '-o', path+'tree.png', '-Gdpi=600'])
Image(filename=path+'tree.png')

Проблема в том, что я использую параметр max_features при обучении модели, поэтому я не знаю, какие функции используются в каждом дереве.Таким образом, при построении дерева я просто получаю X[some_number].Соответствует ли это число столбцу в оригинальном наборе данных?Если нет, как я могу сказать использовать имя столбца, а не номер?

1 Ответ

1 голос
/ 03 мая 2019

Параметр 'max_features' в RandomForestClassifier используется для получения количества функций за раз, чтобы найти наилучшее разделение. Этот параметр передается всем отдельным оценщикам (DecisionTreeClassifier). Все базовые DecisionTreeClassifier объекты принимают целые данные (где выборки взяты из обучающих данных, но все особенности столбцов передаются в каждое дерево). Порядок элементов определяется в этом единственном DecisionTreeClassifier объекте. Так что об этом не нужно беспокоиться.

Вы можете просто использовать параметр feature_names в export_graphviz, чтобы передать имена каждой функции для всех ваших функций.

...