2016-12-05 1 views
0

J'ai les données de test & de train suivantes, que j'effectue sur un extreme gradient boosting algorithm(Xgboost), en utilisant un ensemble de données avec un prédicteur, que je sais qui a puissance de prédiction, bien que les valeurs de la prédiction du modèle est constante quel que soit le facteur prédictif:Xgboost donne des prédictions identiques indépendamment des différentes variables explicatives (R)

library(data.table) 
require(xgboost) 
library(Matrix) 

sparse_matrix_train = sparse.model.matrix(clicked~.-1, data = train) 
sparse_matrix_train2 = sparse.model.matrix(clicked~., data = test) 
bst <- xgboost(data = sparse_matrix2, label = test2$clicked, max.depth = 2, 
       eta = 0.3, nthread = 20, nround = 5,objective = "binary:logistic") 
sparse_matrix_test = sparse.model.matrix(~., data = test) 
test$pred_res<- predict(bst, sparse_matrix_test) 

Notez que pred_res tests de $ ont des valeurs identiques:

test$pred_res 
[1] 0.2937567 0.2937567 0.2937567 0.2937567 0.2937567 0.2937567 0.2937567 0.2937567 0.2937567 
[10] 0.2937567 

quelqu'un peut-il s'il vous plaît ELABOR mangé sur celui-ci?

Les données

train <- structure(list(clicked = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
    1L), prediction = c(0.116741800132, 0.148609212057, 0.27496222789, 
    0.0284488735744, 0.234446058524, 0.405107420156, 0.122376142849, 
    0.126600568099, 0.0636921765101, 0.385909171908), pred_res = c(0.293756693601608, 
    0.293756693601608, 0.293756693601608, 0.343792468309402, 0.293756693601608, 
    0.293756693601608, 0.293756693601608, 0.293756693601608, 0.293756693601608, 
    0.293756693601608)), .Names = c("clicked", "prediction", "pred_res"), 
    row.names = c(NA, -10L), class = c("data.table", "data.frame"), 
    .internal.selfref = <pointer: 0x1547c18>) 

test <- structure(list(prediction = c(0.0553382017171, 0.158500277487, 
    0.155315011347, 0.118212821075, 0.0795492263212, 0.0272566752275, 
    0.159516005352, 0.218685440776, 0.0562459472969, 0.178293801444), 
    pred_res = c(0.293756693601608, 0.293756693601608, 0.293756693601608, 
    0.293756693601608, 0.293756693601608, 0.293756693601608, 0.293756693601608, 
    0.293756693601608, 0.293756693601608, 0.293756693601608)), 
    .Names = c("prediction","pred_res"), row.names = c(NA, -10L), 
    class = c("data.table","data.frame"), .internal.selfref = <pointer: 0x1547c18>) 

Répondre

1

je charger vos données et coururent votre code, mais ont obtenu:

"Erreur dans xgb.get.DMatrix (données, étiquette): objet 'sparse_matrix2' not found"

HTH, cousin_pete

+0

merci pour l'aide, voir mon edit –

+0

Je ne pouvais pas voir votre édition. –

+0

Désolé, je n'ai pas pu voir votre modification. Puis-je vous suggérer d'écrire votre question d'une manière facile à reproduire l'erreur? Vos ensembles «train» et «test», etc. peuvent être déterrés, mais pourquoi ne pas aider les autres? Donc, la première bibliothèque (xgboost) puis "train" est définie comme data.frame ou matrix, puis "test" comme le code que vous avez utilisé. Idéalement, nous devrions simplement copier/coller votre question dans R et voir la sortie. Faites-le avec votre question et vos données telles qu'elles se présentent ici et vous verrez ce que je veux dire. –