2016-09-07 4 views
1

я пытаюсь вне Kaggle цены на жилье вызов: https://www.kaggle.com/c/house-prices-advanced-regression-techniquesR xgboost значение участок с большим количеством функций

Вот сценарий я написал

train <- read.csv("train.csv") 
train$Id <- NULL 
previous_na_action = options('na.action') 
options(na.action = 'na.pass') 
sparse_matrix <- sparse.model.matrix(SalePrice~.-1,data = train) 
options(na.action = previous_na_action) 
model <- xgboost(data = sparse_matrix, label = train$SalePrice, missing = NA, max.depth = 6, eta = 0.3, nthread = 4, nrounds = 16, verbose = 2, objective = "reg:linear") 
importance <- xgb.importance(feature_names = [email protected][[2]], model = model) 
print(xgb.plot.importance(importance_matrix = importance)) 

Данные имеет более 70 функций, я использовал xgboost с max.depth = 6 и nrounds = 16.

Значительный сюжет, который я получаю, очень испорчен, как мне получить только лучшие функции или что-то в этом роде.

enter image description here

ответ

2

Отъезд top_n аргумент xgb.plot.importance. Он делает именно то, что вы хотите.

# Plot only top 5 most important variables. 
print(xgb.plot.importance(importance_matrix = importance, top_n = 5)) 

Редактировать: только версия для разработки xgboost. Альтернативный метод заключается в следующем:

print(xgb.plot.importance(importance_matrix = importance[1:5])) 
+0

Какая версия вы используете Я получаю ошибку неиспользуемый аргумент top_n = 5? –

+0

Похоже, что они добавили его недавно, у версии CRAN этого нет. Если вы хотите получить самую последнюю версию, [установите из своего репозитория github] (https://github.com/dmlc/xgboost/tree/master/R-package). Я отредактирую свой ответ на альтернативу. –