2017-04-04 1 views
0

C'est probablement une question stupide, mais quand j'utilise la fonction H2O Predict dans R, je me demande s'il y a moyen de spécifier qu'elle garde une colonne ou des colonnes à partir des données de notation. Plus précisément, je veux conserver ma clé d'identification unique. En l'état actuel des choses, je finis par faire l'approche vraiment inefficace d'assigner une clé d'index à l'ensemble de données original et une aux scores, puis de fusionner les scores à l'ensemble de données de notation. Je préférerais juste dire "marquer cet ensemble de données et garder les colonnes x, y, z ....". Aucun conseil?Conserver la clé d'identification (ou toute autre colonne) lors de la notation d'un nouvel ensemble de données?

Code Inefficace:

#Use H2O predict function to score new data 
NL2L_SCore_SetScored.hex = h2o.predict(object = best_gbm, newdata = 
NL2L_SCore_Set.hex) 

#Convert scores hex to data frame from H2O 
NL2L_SCore_SetScored.df<-as.data.frame(NL2L_SCore_SetScored.hex) 
#add index to the scores so we can merge the two datasets 
NL2L_SCore_SetScored.df$ID <- seq.int(nrow(NL2L_SCore_SetScored.df)) 



#Convert orignal scoring set to data frame from H2O 
NL2L_SCore_Set.df<-as.data.frame(NL2L_SCore_Set.hex) 
#add index to original scoring data so we can merge the two datasets 
NL2L_SCore_Set.df$ID <- seq.int(nrow(NL2L_SCore_Set.df)) 


#Then merge by newly created ID Key so I have the scores on my scoring data 
#set. Ideally I wouldn't have to even create this key and could keep 
#original Columns from the data set, which include the customer id key 

Full_Scored_Set=inner_join(NL2L_SCore_Set.df,NL2L_SCore_Set.df, by="ID") 

Répondre

1

Plutôt que de faire une jointure, vous pouvez simplement lier colonne de la colonne ID sur le cadre de prévoir, étant donné que les lignes de trame de prédiction sont dans le même ordre.

R Exemple (ignorer le fait que je prédis sur l'ensemble de la formation initiale, c'est à des fins de démonstration):

library(h2o) 
h2o.init() 

data(iris) 
iris$id <- 1:nrow(iris) #add ID column 
iris_hf <- as.h2o(iris) #convert iris to an H2OFrame 

fit <- h2o.gbm(x = 1:4, y = 5, training_frame = iris_hf) 
pred <- h2o.predict(fit, newdata = iris_hf) 
pred$id <- iris_hf$id 
head(pred) 

Maintenant, vous avez un cadre de prédiction avec la colonne ID:

predict setosa versicolor virginica id 
1 setosa 0.9989301 0.0005656447 0.0005042210 1 
2 setosa 0.9985183 0.0006462680 0.0008354416 2 
3 setosa 0.9989298 0.0005663071 0.0005038929 3 
4 setosa 0.9989310 0.0005660443 0.0005029535 4 
5 setosa 0.9989315 0.0005649384 0.0005035886 5 
6 setosa 0.9983457 0.0011517334 0.0005025218 6