Я пытаюсь создать модель регрессии случайного леса на одном из моих наборов данных. Мне нужно найти порядок важности каждой переменной вместе с их именами. Я пробовал несколько вещей, но не могу достичь того, чего хочу. Ниже приведен пример кода я попытался на Бостон жилищного набора данных:Как напечатать порядок важных функций в реестре случайного леса с помощью python?
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
import pandas as pd
import numpy as np
boston = load_boston()
rf=RandomForestRegressor(max_depth=50)
idx=range(len(boston.target))
np.random.shuffle(idx)
rf.fit(boston.data[:500], boston.target[:500])
instance=boston.data[[0,5, 10]]
print rf.predict(instance[0])
print rf.predict(instance[1])
print rf.predict(instance[2])
important_features=[]
for x,i in enumerate(rf.feature_importances_):
important_features.append(str(x))
print 'Most important features:',', '.join(important_features)
Наиболее важные особенности: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Если я печатаю это:
impor = rf.feature_importances_
impor
я ниже выхода:
array([ 3.45665230e-02, 4.58687594e-04, 5.45376404e-03,
3.33388828e-04, 2.90936201e-02, 4.15908448e-01,
1.04131089e-02, 7.26451301e-02, 3.51628079e-03,
1.20860975e-02, 1.40417760e-02, 8.97546838e-03,
3.92507707e-01])
Мне нужно получить имена, связанные с этими значениями, а затем выбрать т из этих функций.
Я не думаю, что я мог бы знать об этом. Но я бы предложил рассчитать энтропию для каждой функции, и самые высокие функции энтропии были бы важными. – EngineeredBrain
@AnwarShaikh: Вы получаете значимость каждой функции в некоторой ценности, используя rf.feature_importances_, дающую некоторые значения. Нам нужно напечатать имена вместе с его порядком. – CodeHunter