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

时间:2015-08-21 17:08:24

标签: r r-factor

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

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

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

生成此错误消息:

  

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

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

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

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

您能否提供有关您用于随机森林模型的包和命令的更多信息?