2017-04-24 1 views
1

Est-ce que quelqu'un sait si les colonnes des nouvelles données dans la fonction de prédiction R doivent être dans le même ordre que les traindata sur lesquelles le modèle prédictif a été construit en utilisant xgboost? Et est-ce un problème si les nouvelles données ont des colonnes supplémentaires? Dans l'exemple ci-dessous, il semble qu'un autre ordre/des colonnes supplémentaires donnent des prédictions différentes.Ordre des colonnes de la fonction de prédiction pour un modèle xgboost

data(mtcars) 
mtcars <- subset(mtcars, select = c(qsec, mpg, drat)) 
mtcars <- as.matrix(mtcars) 
dtrain <- xgb.DMatrix(data = mtcars[,c(2:3)], label=mtcars[,1]) 
mod <- xgboost(data = dtrain, nrounds = 10) 
nd1 <- data.frame(mpg=20, drat=3) 
nd2 <- data.frame(drat=3, other=100, mpg=20) 
nd3 <- data.frame(drat=3, mpg = 20) 
nd4 <- data.frame(mpg=20, other=100, drat=3) 

predict(mod, as.matrix(nd1)) 
# 16.4753 
predict(mod, as.matrix(nd2)) 
# 14.3291 
predict(mod, as.matrix(nd3)) 
# 14.3291 
predict(mod, as.matrix(nd4)) 
# 15.71044 
+0

Il semble ignorer les noms. Exemple: 'nd4 <- data.frame (mpg = 20, autre = 3); predict (mod, newdata = as.matrix (nd4)) ' # 16.4753' – epi99

Répondre

0

Oui, il faut conserver les colonnes dans le même ordre afin d'obtenir le bon résultat. Il est mentionné dans le lien suivant test set column order