在对新数据集评分时保留 ID 键(或任何其他列)?

Keeping the ID Key (Or Any Other Column) When Scoring a New Data Set?

这可能是一个愚蠢的问题,但是当我在 R 中使用 H2O 预测函数时,我想知道是否有一种方法可以指定它从评分数据中保留一列或多列。具体来说,我想保留我的唯一 ID 密钥。

就目前而言,我最终采用了一种非常低效的方法,即为原始数据集分配一个索引键,为分数分配一个索引键,然后将分数合并到评分数据集中。我只想说 "score this data set and keep x,y,z....columns as well." 有什么建议吗?

低效代码:

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

您可以简单地将 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