Извлечение важности функции из деревьев решений (scikit-learn)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Извлечение важности функции из деревьев решений (scikit-learn)

Сообщение Anonymous »

Я пытался понять важность функций, используемых в дереве решений, которое я смоделировал. Мне интересно узнать вес каждой функции, выбранной в узлах, а также самого термина. Мои данные представляют собой набор документов.
Это мой код для дерева решений, я изменил фрагмент кода из scikit-learn, который извлекает (http://scikit-learn.org/stable/auto_exa ... mportances .html):

Код: Выделить всё

from sklearn.feature_extraction.text import TfidfVectorizer

### Feature extraction
tfidf_vectorizer = TfidfVectorizer(stop_words=stopwords,
use_idf=True, tokenizer=None, ngram_range=(1,2))#ngram_range=(1,0)

tfidf_matrix = tfidf_vectorizer.fit_transform(data[:, 1])
terms = tfidf_vectorizer.get_features_names()
### Define Decision Tree and fit
dtclf = DecisionTreeClassifier(random_state=1234)

dt = data.copy()

y = dt["label"]
X = tfidf_matrix

fitdt = dtclf.fit(X, y)

from sklearn.datasets import load_iris
from sklearn import tree

### Visualize Devision Tree

with open('data.dot', 'w') as file:
tree.export_graphviz(dtclf, out_file = file, feature_names = terms)
file.close()

import subprocess
subprocess.call(['dot', '-Tpdf', 'data.dot', '-o' 'data.pdf'])

### Extract feature importance

importances = dtclf.feature_importances_

indices = np.argsort(importances)[::-1]

# Print the feature ranking
print('Feature Ranking:')

for f in range(tfidf_matrix.shape[1]):
if importances[indices[f]] > 0:
print("%d. feature %d (%f)" % (f + 1, indices[f], importances[indices[f]]))
print ("feature name: ", terms[indices[f]])
  • Прав ли я, предполагая, что использование term[indices[f]] (который является вектором термина признака) приведет к печати фактического термина признака используется для разделения дерева в определенном узле?
  • Дерево решений, визуализируемое с помощью GraphViz, имеет, например, X[30], я предполагаю, что это относится к числовой интерпретации термина функции . Как извлечь сам термин, чтобы проверить процесс, который я развернул в №1?
Обновленный код

Код: Выделить всё

fitdt = dtclf.fit(X, y)
with open(...):
tree.export_graphviz(dtclf, out_file = file, feature_names = terms)
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/342 ... ikit-learn
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»