我想准备一个数据集,以便在Task
中使用mlr
包。二元因子自变量应该属于因子(factor)、逻辑(logical)、字符(character)还是整数(integer)类别?是否可以将具有两个以上类别的因子变量设为因子/字符类别,或者mlr中是否集成了某些模型,例如需要模型矩阵而mlr不会自动进行转换的情况?在这些情况下,mlr期望使用哪些类别?
例如:
x1 <- factor(sample(0:1, size=10, replace = TRUE))x2 <- factor(sample(letters[1:5], size=10, replace = TRUE))y <- sample(c("yes", "no"), size=10, replace = TRUE)library(mlr)makeClassifTask(data = data.frame(y, x1, x2), target = "y", positive="yes")
回答:
是的。如果它是一个因子,就应该是因子类别。当然,你也可以有两个以上的类别,尽管不是所有学习器都支持超过两个类别(mlr会自动判断学习器是否兼容)。mlr总是会自动将任务中的一切转换为适合学习器的形式,或者告诉你学习器和任务不兼容。
你还可以使用listLearners()
函数列出适合特定任务的学习器。