【问题标题】:Error while running the predict() function in mlr package在 mlr 包中运行 predict() 函数时出错
【发布时间】:2015-12-20 07:40:56
【问题描述】:

我正在尝试使用 mlr 包运行模型,但 predict() 函数存在一些问题。它给了我以下错误信息:

Error in predict(mod, task = task, subset = test) : 
Assertion on 'subset' failed: Must be of type 'integerish', not 'data.frame'

请在下面找到一个可重现的示例:

require(mlr)     # models
require(caTools) # sampling
require(Zelig)   # data

data("voteincome")
voteincome$vote <- as.factor(voteincome$vote)

set.seed(0)
sample <- sample.split(voteincome, SplitRatio = .75)
train <- subset(voteincome, sample == TRUE)
test <- subset(voteincome, sample == FALSE)

train <- na.omit(train)
test <- na.omit(test)

task <- makeClassifTask(data = train, target = "vote")
lrnr <- makeLearner("classif.randomForest")
mod <- train(lrnr, task)
pred <- predict(mod, task = task, subset = test)

然后出现错误。难道我做错了什么?谢谢!

【问题讨论】:

  • 这个怎么样:pred &lt;- predict(mod$learner.model, task = task, subset = test)

标签: r mlr


【解决方案1】:

mlr 期望将索引向量传递给subset 参数。然后它将自动对数据帧进行子集化,因此您不必自己执行此操作。您还可以使用mlr 使用重采样描述自动划分为训练集和测试集(请参阅the tutorial):

require(mlr)     # models
require(caTools) # sampling
require(Zelig)   # data

data("voteincome")
voteincome$vote <- as.factor(voteincome$vote)

set.seed(0)
task <- makeClassifTask(data = voteincome, target = "vote")
lrnr <- makeLearner("classif.randomForest")
rdesc <- makeResampleDesc("Holdout", split = 0.75)

res <- resample(learner = lrnr, task = task, resampling = rdesc)

# get predictions on test set
getPredictionResponse(res$pred)

# compute accuracy, also see https://mlr-org.github.io/mlr-tutorial/devel/html/performance/index.html
performance(res$pred, acc)

【讨论】:

  • 感谢拉斯的精彩回答。
【解决方案2】:

试试这个:

pred <- predict(mod$learner.model, task = task, subset = test) 

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 1970-01-01
    • 2020-12-16
    • 2019-01-08
    • 2021-06-04
    • 1970-01-01
    • 2019-12-17
    • 2020-12-31
    • 1970-01-01
    相关资源
    最近更新 更多