计算精度时,各组因素不同

问题描述 投票:0回答:2

我建立了一个随机森林模型。预测输出和实际输出是因素。有19个类可以预测,但其中一个类没有出现在测试数据集中。

然后我想用这个公式计算模型的准确性:

accuracy <- sum(ActualOutput==PredictedOutput, na.rm = TRUE) / length(PredictedOutput)

哪个生成此错误消息:

Ops.factor中的错误(ActualOutput,PredictedOutput):级别的因子集是不同的

ActualOutput有19个级别,PredictedOutput有18个级别。我该怎么办?

r r-factor
2个回答
1
投票

假设我们有两个相同长度但不同级别的输出ActualOutputPredictedOutput

PredictedOutput <- factor(c("a", "b", "b"))
ActualOutput <- factor(c("a", "b", "c"))

sum(ActualOutput == PredictedOutput)

Error in Ops.factor(ActualOutput, PredictedOutput) : 
  level sets of factors are different

PredictedOutput有2个级别,但ActualOutput有3个。我们想将PredictedOutput的级别设置为ActualOutput的级别

PredictedOutput <- factor(PredictedOutput, levels=levels(ActualOutput))

现在PredictedOutput看起来像

[1] a b b
Levels: a b c

你的配方应该有效

sum(ActualOutput == PredictedOutput)
[1] 2

如果您有一个可重复的小例子,我们可能会提供更多帮助


0
投票

如果将变量转换为字符而不是因子,是否会出现同样的问题?你可以像这样构建模型,还是需要因子类型?

通常,这是一个培训/测试数据集构建问题。有时,当其中一个课程观察很少时,您必须确保在训练和测试集中都有一些案例。检查一些分层抽样方法。

你能提供一些关于你用于随机森林模型的包和命令的更多信息吗?

© www.soinside.com 2019 - 2024. All rights reserved.