运行h2o.hit_ratio_table时遇到问题

时间:2018-12-03 17:32:54

标签: r h2o xgboost

当我为xgboost运行H2o时遇到了这个问题。请问如何解决这个问题?谢谢。

我运行这段代码

h2o.hit_ratio_table(gbm2,valid =T) 

我遇到这个错误

" Error in names(v) <- v_names : 
'names' attribute [1] must be the same length as the vector [0]"

然后我继续运行

mean(finalRF_prediction$predict==test_gb$Cover_Type)

我得到了错误:

Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page,  : 
ERROR MESSAGE:
Name lookup of 'NULL' failed

我的模特是:

gbm2=h2o.gbm(training_frame = train_gb,validation_frame = valid_gb,x=1:51,y=52,
         model_id="gbm2_covType_v2",
         ntrees=200,
         max_depth = 30,
         sample_rate = .7,
         col_sample_rate = .7,
         learn_rate=.3,
         stopping_round=2,
         stopping_tolerance = .01,
         score_each_iteration = T,seed=2000000)
finalRF_prediction=h2o.predict(object=gbm2,newdata = test_gb)
summary(gbm2)
h2o.hit_ratio_table(gbm2,valid=T)[1,2]
mean(finalRF_prediction$predict==test_gb$Cover_Type)

1 个答案:

答案 0 :(得分:1)

在没有数据集可重新运行代码的情况下,很难说出导致错误的原因。对于第二个错误,请检查test_gb数据框中是否存在列Cover_Type

您拥有的代码似乎很好,所以我将仔细检查您的列名。

此外,这是xgboost的代码段,向您展示,您可以成功使用hit_ratio_table()。

library(h2o)
h2o.init()
iris.hex <- h2o.importFile( "http://h2o-public-test-data.s3.amazonaws.com/smalldata/iris/iris_wheader.csv")
i.sid <- h2o.runif(iris.hex)
iris.train <- h2o.assign(iris.hex[i.sid > .2, ], "iris.train")
iris.test <- h2o.assign(iris.hex[i.sid <= .2, ], "iris.test")
iris.xgboost.valid <- h2o.xgboost(x = 1:4, y = 5, training_frame = iris.train, validation_frame = iris.test)


# Hit ratio
hrt.valid.T <- h2o.hit_ratio_table(iris.xgboost.valid,valid = TRUE)
print(hrt.valid.T)