对样本外数据的机器学习分类预测输出的观测值太少

数据挖掘 机器学习 分类 r
2022-02-27 14:01:44

使用 mlr 包,我开发了一项任务,使用词频数据将推文分为两类(TRUE 和 FALSE)。现在我正在使用此任务对样本外推文进行分类。抱歉,我无法分享我的数据,但我会在这里显示我的代码:

task = makeClassifTask(data = train, target = "category")
mod = train("classif.randomForest", task)

newdata.pred = predict(mod, newdata = outofsample)
newdata.pred

我的输出显示在这里:

Prediction: 17981 observations
predict.type: response
threshold: 
time: 0.29
... (#rows: 17981, #cols: 1)

作为数据框:

response
<fctr>
1   TRUE            
2   FALSE           
3   FALSE           
4   FALSE           
5   FALSE           
6   FALSE

我现在想使用我的分类来删除任何属于“错误”类别的推文。但如果我有 17981 条推文,为什么我只看到 6 个观察值?我找不到“train”数据框或“outofsample”数据框有任何问题(它们都有适当数量的观察并在全局环境中列为数据框,但我确实注意到对象“task”创建了一个列表 6 . 这只是巧合吗?如何检索我所有推文的分类?如果此分类方法不包括 ID 号,我如何将此信息链接到样本数据集外以按 ID 号删除推文?

请不要太苛刻地评价我,我对机器学习和 R 很陌生。任何建议都会有很大帮助。

1个回答

实际预测可以在 中找到newdata.pred$data

请注意,mlr不再维护:

{mlr} 被视为从 mlr-org 团队退休。我们不会再添加新功能,只会修复严重的错误。我们建议从现在开始使用新的 mlr3 框架并用于未来的项目。

请参阅文档:https ://mlr.mlr-org.com/

library(mlr)
library(ISLR)

df = ISLR::Auto
df$cylinders = as.factor(df$cylinders)
df$name <- NULL

task = makeClassifTask(data = df, target = "cylinders")
mod = train("classif.randomForest", task)

newdata.pred = predict(mod, newdata = df)
result = data.frame(newdata.pred$data)

    truth response
1       8        8
2       8        8
3       8        8
4       8        8
5       8        8
6       8        8
7       8        8
8       8        8
9       8        8
10      8        8
11      8        8
12      8        8
...