不允许对 H2o 包中的字符串向量进行操作
Posted
技术标签:
【中文标题】不允许对 H2o 包中的字符串向量进行操作【英文标题】:Operation not allowed on string vector in H2o package 【发布时间】:2017-09-16 20:43:05 【问题描述】:当我使用 H2o 包运行随机森林模型时出现以下错误。
错误:来自 localhost/127.0.0.1:54321 的 DistributedException,由 java.lang.IllegalArgumentException:不允许对字符串进行操作 向量。
我运行的代码如下:-
fit = h2o.randomForest(x = indep, y = dep, training_frame = QCAnalysis_sub_h2o, seed = 1234, ntrees = 500, mtries = 3, max_depth = 50)
请澄清错误。
【问题讨论】:
请添加一些示例数据,可能您的一列是不允许作为输入的字符向量 【参考方案1】:一些示例代码:
QCAnalysis_sub_h2o <- h2o.importFile(path = normalizePath("QCAnalysis_sub_h2o.csv"),header=T)
(如果没有,用 as.data.frame 指定数据框)
x 和 y 应该说明您希望 h2o.randomforest 读取的列
【讨论】:
【参考方案2】:确保class(QCAnalysis_sub_h2o)
是“H2OFrame”并且您的indep
向量不包含任何字符串列。另外,请注意,当使用as.h2o()
将 R data.frame 转换为 H2O 帧时,它会保留列类型,因此它不会自动将任何字符串列转换为因子。您需要在每列上使用as.factor()
函数自动执行此操作(例如df[,"mycol"] <- as.factor(df[,"mycol"]
)。您可以在复制到 H2O 之前在 R data.frame 上执行此操作,或者您可以在列在 H2O 框架中后对其进行修复。
如果您使用 h2o.importFile()
命令将 CSV 文件从磁盘直接读入 H2O,默认情况下它会将包含字符串的任何列转换为因子,因此我假设您可能从 R 复制了此帧。
【讨论】:
对于非数字(换句话说,分类)数据,是的,H2O 算法只允许因子列,但不允许字符串/字符列。 @ErinLeDell 这种手动转换似乎只需要目标列? 'auto' 只修复输入变量?文档不清楚h2o-release.s3.amazonaws.com/h2o/rel-ueno/2/docs-website/… 所有分类列必须是因子(包括特征和响应)。categorical_encoding
选项将因子编码为幕后的另一种表示,但它必须是一个因子开始。以上是关于不允许对 H2o 包中的字符串向量进行操作的主要内容,如果未能解决你的问题,请参考以下文章
R 中 h2o 包中的 predict.H2OModel() 是不是为 h2o.randomForest() 模型提供 OOB 预测?