2017-04-04 83 views
0

这可能是一个愚蠢的问题,但是当我在R中使用H2O Predict函数时,我想知道是否有一种方法可以指定它保留评分数据中的一列或多列。具体而言,我想保留我的唯一ID密钥。现在,我最终做了一个非常低效的方法,将原始数据集和一个索引键分配给分数,然后将分数合并到计分数据集中。我宁愿说“评分这个数据集并保留x,y,z ....列”。有什么建议?评分新数据集时保留ID密钥(或任何其他列)?

低效的代码:

#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") 

回答

1

而不是做一个连接,可以简单地ID列到预测帧列结合,由于预测帧的行是按相同的顺序。

R实施例(忽略,我预测在原有训练集的事实,这是仅用于演示目的):

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) 

现在你有一个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 
相关问题