#python #scikit-learn #decision-tree
#python #scikit-learn #дерево решений
Вопрос:
Я запускаю алгоритм деревьев решений из SciKit Learn и хочу получить вектор Feature_importance вместе с именами функций, чтобы я мог определить, какие функции являются доминирующими в процессе маркировки. Не могли бы вы мне помочь? Спасибо.
Комментарии:
1. опубликуйте хотя бы то, что вы пробовали. Более того,
sklearn
документация API действительно понятна
Ответ №1:
Предположим, что у вас есть образцы в виде строк pandas.DataFrame
:
from pandas import DataFrame
features = DataFrame({'f1': (1, 2, 2, 2), 'f2': (1, 1, 1, 1), 'f3': (3, 3, 1, 1)})
labels = ('a', 'a', 'b', 'b')
а затем используйте классификатор дерева или леса:
from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
classifier.fit(features, labels)
Тогда значения должны соответствовать столбцам фрейма:
for name, importance in zip(features.columns, classifier.feature_importances_):
print(name, importance)
# f1 0.0
# f2 0.0
# f3 1.0
Ответ №2:
Хорошее предложение от wrwrwr! Поскольку порядок значений важности объектов в свойстве ‘feature_importances_’ классификатора совпадает с порядком имен объектов в ‘feature.columns’, вы можете использовать функцию zip().
Кроме того, также полезно отсортировать функции и выбрать N лучших функций для отображения.
Допустим, вы создали классификатор:
clf = DecisionTreeClassifier(random_state=0).fit(X_train,y_train)
Затем вы можете распечатать 5 лучших функций в порядке убывания важности:
for importance, name in sorted(zip(clf.feature_importances_, X_train.columns),reverse=True)[:5]:
print (name, importance)