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