2017-04-04 24 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 
相關問題