2017-04-20 22 views
2

当我使用H2o包运行随机森林模型时,出现以下错误。H2o包中的字符串向量不允许操作

Error: DistributedException from localhost/127.0.0.1:54321, caused by java.lang.IllegalArgumentException: Operation not allowed on string vector.

我跑的代码如下: -

fit = h2o.randomForest(x = indep, y = dep, training_frame = QCAnalysis_sub_h2o, seed = 1234, ntrees = 500, mtries = 3, max_depth = 50) 

上的错误请澄清。

+1

请添加一些示例数据,可能您的列中有一列是不允许作为输入的字符向量 – timfaber

回答

2

确保class(QCAnalysis_sub_h2o)是“H2OFrame”,并且您的indep矢量不包含任何字符串的列。此外,请注意,使用as.h2o()将R data.frame转换为H2O Frame时,它会保留列类型,因此它不会自动将任何字符串列转换为因子。您需要使用每列上的as.factor()函数自动执行此操作(例如df[,"mycol"] <- as.factor(df[,"mycol"])。在复制到H2O之前,您可以在R data.frame上执行此操作,或者可以在处理H2O框架后固定这些列。

如果使用h2o.importFile()命令从磁盘CSV文件直接读入水中,它会变成包含字符串成默认的因素任何列,所以我认为你可能从R.

+0

随机森林只接受因素inupt? – user3342643

+0

对于非数字(换言之,分类)数据,是的,H2O算法只允许因子列,但不允许字符串/字符列。 –

+0

@ErinLeDell这个手动转换似乎只需要目标列? '自动'只修复输入变量?文档不清楚https://h2o-release.s3.amazonaws.com/h2o/rel-ueno/2/docs-website/h2o-docs/data-science/algo-params/categorical_encoding.html – Tagar

0

在复制这架一些示例代码:

QCAnalysis_sub_h2o <- h2o.importFile(path = normalizePath("QCAnalysis_sub_h2o.csv"),header=T) 

(如果没有,请用as.data.frame数据帧)

x和y应该说明你想h2o.randomforest阅读