xgboost в Python не возвращает важность функций, несмотря на то, что указано в документации - PullRequest
0 голосов
/ 15 февраля 2019

В соответствии с документацией xgboost (https://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.training) xgboost возвращает значения функций:

feature_importances_

свойство важностей элементов

Примечание

Важность функции определяется только для бустеров дерева. Важность функции определяется только тогда, когда модель дерева решений выбрана в качестве базового обучающегося ((бустер = gbtree). Она не определенадля других базовых типов учащихся, таких как линейные учащиеся (ракета-носитель = gblinear).

Возвращает: feature_importances_

Тип возвращаемого значения: массив фигур [n_features]

Однако, похоже, это не так, как показывает следующий пример с игрушкой:

import seaborn as sns
import xgboost as xgb

mpg = sns.load_dataset('mpg')

toy = mpg[['mpg', 'cylinders', 'displacement', 'horsepower', 'weight',
       'acceleration']]

toy = toy.sample(frac=1)

N = toy.shape[0]

N1 = int(N/2)

toy_train = toy.iloc[:N1, :]
toy_test = toy.iloc[N1:, :]

toy_train_x = toy_train.iloc[:, 1:]

toy_train_y = toy_train.iloc[:, 1]

toy_test_x = toy_test.iloc[:, 1:]

toy_test_y = toy_test.iloc[:, 1]

max_depth = 6
eta = 0.3
subsample = 0.8
colsample_bytree = 0.7
alpha = 0.1

params = {"booster" : 'gbtree' , 'objective' : 'reg:linear' , 'max_depth' : max_depth, 'eta' : eta,\
             'subsample' : subsample, 'colsample_bytree' : colsample_bytree, 'alpha' : alpha}

dtrain_toy = xgb.DMatrix(data = toy_train_x , label = toy_train_y)
dtest_toy = xgb.DMatrix(data = toy_test_x, label = toy_test_y)
watchlist = [(dtest_toy, 'eval'), (dtrain_toy, 'train')]

xg_reg_toy = xgb.train(params = params, dtrain = dtrain_toy, num_boost_round = 1000, evals = watchlist, \
                early_stopping_rounds = 20)

xg_reg_toy.feature_importances_
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-378-248f7887e307> in <module>()
----> 1 xg_reg_toy.feature_importances_

AttributeError: 'Booster' object has no attribute 'feature_importances_'

1 Ответ

0 голосов
/ 15 февраля 2019

Вы используете API обучения , но вы ссылаетесь на Scikit-Learn API .И только Scikit-Learn API имеет атрибут feature_importances.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...