我建立了一个随机森林模型。预测输出和实际输出是因素。有19个类可以预测,但其中一个类没有出现在测试数据集中。
然后我想用这个公式计算模型的准确度:
accuracy <- sum(ActualOutput==PredictedOutput, na.rm = TRUE) / length(PredictedOutput)
生成此错误消息:
Ops.factor(ActualOutput,PredictedOutput)中的错误:级别集 因素是不同的
ActualOutput
有19个级别,PredictedOutput
有18个级别。我该怎么办?
答案 0 :(得分:1)
假设我们有两个长度相同但级别不同的输出ActualOutput
和PredictedOutput
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)
如果将变量转换为字符而不是因子,是否会出现同样的问题?您可以像这样构建模型,还是需要因子类型?
通常,这是一个培训/测试数据集构建问题。有时,当其中一个课程观察很少时,您必须确保在训练和测试集中都有一些案例。检查一些分层抽样方法。
您能否提供有关您用于随机森林模型的包和命令的更多信息?