【问题标题】:Error when using mean() in R: Error in Ops.factor(obs, pred) : level sets of factors are different在 R 中使用 mean() 时出错:Ops.factor(obs, pred) 中的错误:因子的水平集不同
【发布时间】:2019-04-09 00:15:26
【问题描述】:

我正在使用如下所示的数据集:

> head(test_accuracy)
        observed predicted new_predicted
1 Moving/Feeding  Foraging      Standing
2       Standing  Foraging      Standing
3       Standing  Foraging      Standing
4       Standing  Foraging      Standing
5       Standing  Foraging      Standing
6       Standing  Foraging      Standing

我的问题很简单。我想通过比较test_accuracy$observedtest_accuracy$new_predicted 之间的匹配百分比来计算分类的准确度度量。我只是使用下面的代码,但我得到了相关的错误:

> head(test_accuracy)
        observed predicted new_predicted
1 Moving/Feeding  Foraging      Standing
2       Standing  Foraging      Standing
3       Standing  Foraging      Standing
4       Standing  Foraging      Standing
5       Standing  Foraging      Standing
6       Standing  Foraging      Standing
> obs<-as.factor(test_accuracy$observed)
> pred<-as.factor(test_accuracy$new_predicted)
> mean(obs == pred)
Error in Ops.factor(obs, pred) : level sets of factors are different

有人可以告诉我我做错了什么吗?我可以在下面上传dput() 示例:

> dput(test_accuracy)
structure(list(observed = c("Moving/Feeding", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Feeding/Moving", "Standing", 
"Standing", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Standing", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Standing", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Standing", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Standing", "Standing", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Standing", 
"Standing", "Standing", "Standing", "Feeding/Moving", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Standing", "Feeding/Moving", 
"Feeding/Moving", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Standing", 
"Standing", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Moving/Feeding", 
"Feeding/Moving", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Standing", "Moving/Feeding", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Standing", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving"), predicted = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 1L, 2L, 2L, 3L, 3L, 3L, 
1L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 
3L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 3L, 3L, 2L, 3L, 2L, 3L, 3L, 3L, 
3L, 2L, 2L, 2L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 2L, 
2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 
2L, 2L, 3L, 2L, 3L, 3L, 2L, 3L, 1L, 3L, 1L, 1L, 3L, 1L, 2L, 2L, 
3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
3L, 2L, 3L, 1L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 2L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 2L, 1L, 
2L, 3L, 3L, 3L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 2L, 
1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 3L, 2L, 2L, 3L, 3L, 
2L, 3L, 3L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 3L, 1L, 3L, 1L, 
1L, 1L, 1L, 1L, 3L, 1L), .Label = c("Feeding", "Foraging", "Standing"
), class = "factor"), new_predicted = c("Standing", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Moving/Feeding", "Standing", "Standing", 
"Standing", "Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Standing", "Moving/Feeding", "Standing", "Standing", 
"Standing", "Standing", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Standing", "Standing", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Standing", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Standing", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Standing", "Moving/Feeding", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Moving/Feeding", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Standing", "Moving/Feeding", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Moving/Feeding", "Standing", "Standing", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Standing", "Standing", "Moving/Feeding", "Moving/Feeding", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Standing", "Moving/Feeding", 
"Standing", "Standing", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Standing")), class = "data.frame", row.names = c(NA, -215L))

感谢任何输入!

【问题讨论】:

  • 转向factor 有什么意义? observed 有 3 个,而 new_predicted 有两个,因此您的错误。

标签: r mean


【解决方案1】:

不转换成因数,直接做如下怎么样,

mean(test_accuracy$observed == test_accuracy$new_predicted)
# 0.5069767

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多