【发布时间】:2021-11-21 21:43:03
【问题描述】:
我正在使用 R 编程语言。我在 R 中使用“CORELS”库,这里是一个例子(CORELS 是一个类似于决策树的统计模型):
library(corels)
logdir <- tempdir()
rules_file <- system.file("sample_data", "compas_train.out", package="corels")
labels_file <- system.file("sample_data", "compas_train.label", package="corels")
meta_file <- system.file("sample_data", "compas_train.minor", package="corels")
stopifnot(file.exists(rules_file),
file.exists(labels_file),
file.exists(meta_file),
dir.exists(logdir))
corels(rules_file, labels_file, logdir, meta_file,
verbosity_policy = "silent",
regularization = 0.015,
curiosity_policy = 2, # by lower bound
map_type = 1) # permutation map
cat("See ", logdir, " for result file.")
输出可以在这里查看:
OPTIMAL RULE LIST
if ({sex:Male,juvenile-crimes:>0}) then ({recidivate-within-two-years:Yes})
else if ({priors:>3}) then ({recidivate-within-two-years:Yes})
else ({recidivate-within-two-years:No})
我的问题:对于上述函数的语法如何工作,我仍然有些困惑。例如,我正在尝试在“iris”数据集上使用上述函数:
data(iris)
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
现在,我尝试在 iris 数据集上应用“corles”函数:
logdir <- tempdir()
rules_file <- iris
labels_file <- colnames(iris)
corels(rules_file, labels_file, logdir,
verbosity_policy = "silent",
regularization = 0.015,
curiosity_policy = 2, # by lower bound
map_type = 1) # permutation map
cat("See ", logdir, " for result file.")
但这会产生以下错误:
Error in corels(rules_file, labels_file, logdir, verbosity_policy = "silent", :
Expecting a single string value: [type=character; extent=5].
谁能告诉我如何解决这个错误?
谢谢
参考资料:
【问题讨论】:
-
我遇到了类似的(令人困惑的)错误。这是解析错误本身的方法。显然,它期待一个字符串。但是,然后它列出了你给它的内容,而不是一个范围为 5(这意味着 5 个元素)的数组,每个元素都是字符类型。
-
首先,我很困惑,因为我认为它是 ASKING FOR a string, type_character with extent=5 并假设它意味着一个 5 个字符的字符串。只有当我意识到 5(在我的情况下是 2)是元素的数量时,我才意识到括号中的部分描述了我错误地给出的数组,而不是它想要的字符串。
标签: r function search optimization tree