当我为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)
答案 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)