使用 MLR 包中的 makeRegrTask 函数时出错

Error using the makeRegrTask function from the MLR package

我正在尝试使用 MLR 包进行特征选择。这是我的代码:

#Feature Extraction
features.task = makeRegrTask(id = "cr", data = final1, target = "spam")
feature_selection= generateFilterValuesData(features.task, method = "information.gain")
plotFilterValues(feature_selection)

这是我遇到的错误:

> features.task = makeRegrTask(id = "cr", data = final1, target = "spam")
Error in (function (cn, x)  : 
  Unsupported feature type (character) in column 'host'.

我应该怎么做才能解决这个错误?在此先感谢您的帮助。

host 列包含字符(字符串)值,但 makeRegrTask 期望仅看到您作为 data 传入的任何内容中的响应变量和预测变量。

来自docs

data: A data frame containing the features and target variable

如果您打算 host 成为分类预测变量,则需要创建代表每个级别的虚拟变量。否则,在将 final1 传递给 makeRegrTask 之前删除 host

如果host是一个字符变量那么你应该先把它转换成一个因子。 mlr可以处理因子

可能的代码是:

data = final1 %>% mutate_at(vars(one_of("host")), funs( as.factor)) 
data = final1 %>% mutate_if(sapply(data_test, is.character), as.factor)

请注意,这是 dplyr 代码。在第一行中,您可以添加要转换为因子的列名称,以便将其传递给任务。第二个转换所有字符列。