2016-08-29 7 views
0

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

В настоящее время я использую встроенный атрибут sklearn как такой

Model = Model.fit(Train_Features, Labels_Train) 
print(Model.feature_importances_) 

Это просто, что его больше черного метод коробчатого, я не понимая, какой метод он использует, чтобы взвешивать важность в отношении особенностей. Есть ли лучший способ сделать это?

+0

Возможно, вы могли бы уточнить: что вы нашли недостатком в этом методе? –

+0

Просто его метод черных ящиков, я не понимаю, какой метод он использует, чтобы подчеркнуть важность функций. Мои извинения, должен был заявить об этом в вопросе – kage77

+0

Добавьте это разъяснение к вашему вопросу, и я могу ответить –

ответ

1

Особенность не является черным ящиком, когда дело доходит до деревьев решений. Из документации для DecisionTreeRegressor:

Важность функции вычисляется как (нормированной) общего уменьшения критерия принесенной этой функции. Известно также как значение Джини.

Для леса это просто среднее значение между различными деревьями в вашем лесу. Проверьте source code:

def feature_importances_(self): 
    """Return the feature importances (the higher, the more important the 
     feature). 
    Returns 
    ------- 
    feature_importances_ : array, shape = [n_features] 
    """ 
    if self.estimators_ is None or len(self.estimators_) == 0: 
     raise NotFittedError("Estimator not fitted, " 
          "call `fit` before `feature_importances_`.") 

    all_importances = Parallel(n_jobs=self.n_jobs, 
           backend="threading")(
     delayed(getattr)(tree, 'feature_importances_') 
     for tree in self.estimators_) 

    return sum(all_importances)/len(self.estimators_) 
+0

@ kage77 сделал это ответ на ваш вопрос? –