计算精度时因子水平集不同
Level sets of factors are different while calculating accuracy
我建立了一个随机森林模型。预测输出和实际输出是因子。有 19 类 个要预测,但其中一个 类 没有出现在测试数据集中。
然后我想计算模型的准确性,使用这个公式:
accuracy <- sum(ActualOutput==PredictedOutput, na.rm = TRUE) / length(PredictedOutput)
生成此错误消息的原因:
Error in Ops.factor(ActualOutput, PredictedOutput) : level sets of
factors are different
ActualOutput
有 19 个级别,PredictedOutput
有 18 个级别。我该怎么办?
如果你将变量转换为字符而不是因子,你会遇到同样的问题吗?你能像那样构建你的模型吗?或者你需要因子类型?
一般来说,这是一个 training/testing 数据集构建问题。有时,当 类 之一的观察结果很少时,您必须确保在训练和测试集中都有一些案例。检查一些分层抽样方法。
你能提供更多关于你用于随机森林模型的包和命令的信息吗?
假设我们有两个长度相同但级别不同的输出 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
如果您有一个可重现的小例子,我们可能会提供更大的帮助
我建立了一个随机森林模型。预测输出和实际输出是因子。有 19 类 个要预测,但其中一个 类 没有出现在测试数据集中。
然后我想计算模型的准确性,使用这个公式:
accuracy <- sum(ActualOutput==PredictedOutput, na.rm = TRUE) / length(PredictedOutput)
生成此错误消息的原因:
Error in Ops.factor(ActualOutput, PredictedOutput) : level sets of factors are different
ActualOutput
有 19 个级别,PredictedOutput
有 18 个级别。我该怎么办?
如果你将变量转换为字符而不是因子,你会遇到同样的问题吗?你能像那样构建你的模型吗?或者你需要因子类型?
一般来说,这是一个 training/testing 数据集构建问题。有时,当 类 之一的观察结果很少时,您必须确保在训练和测试集中都有一些案例。检查一些分层抽样方法。
你能提供更多关于你用于随机森林模型的包和命令的信息吗?
假设我们有两个长度相同但级别不同的输出 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
如果您有一个可重现的小例子,我们可能会提供更大的帮助