【问题标题】:Error with "-" not meaningful for factors [duplicate]“-”错误对因子没有意义[重复]
【发布时间】:2018-08-07 05:15:47
【问题描述】:

我正在尝试使用随机森林对我的数据集执行交叉验证。

我的响应变量是具有 2 个级别 (1, 2) 的数据类型因子。

我在下面的这个函数中使用了我的交叉验证技术

k = 10

Imputed_data$id <- sample(1:k , nrow(Imputed_data), replace = TRUE)
list <- 1:k

prediction <- data.frame()
testsetcopy <- data.frame()

progress.bar <- create_progress_bar("text")
progress.bar$init(k)

for (i in 1:k){

  trainingset <- subset(Imputed_data,id %in% list[-i])
  testset <- subset(Imputed_data, id %in% c(i))

  # run a random forest model
  mymodel <- randomForest(trainingset$Accepted~ ., data = trainingset)


  temp <- as.data.frame(predict(mymodel, testset[,-13]))

  prediction <- rbind(prediction, temp)


  testsetcopy <- rbind(testsetcopy, as.data.frame(testset[,13]))

  progress.bar$step()
}

result <- cbind(prediction, testsetcopy[,1])
names(result) <- c("Predicted", "Actual")

result$Difference <-abs(result$Actual-result$Predicted)


summary(result$Difference)

我在行中遇到错误

结果$差异

在 Ops.factor(result$Actual, result$Predicted) 中:'-' 没有意义 对于因素

我可以理解 abs 不能用于因子,并且 - 也没有使用。

我是 R 新手,我不确定如何计算我的结果。任何线索都会有所帮助。

【问题讨论】:

    标签: r random-forest cross-validation


    【解决方案1】:

    你不能减去因数,也不能用 abs 作为因数。这很清楚。

    显示结果的最佳方式是在交叉表中,例如,尝试

    table(result$predicted, result$Actual)
    

    或者使用插入符号的功能:

    confusionMatrix(result$predicted, result$Actual)
    

    【讨论】:

    • 在使用 table(prediction, testsetcopy[,1]) 时,我收到一个错误“sort.list(y) 中的错误:'x' 必须是 'sort.list' 的原子吗?在列表中称为“排序”?”
    • 你能检查你的对象predictiontestsetcopy[,1]吗?它们应该是因素。 class(prediction)summary(prediction) 会有所帮助。
    • 我的总结(预测)说,1:3540; 2: 1054 和 class(prediction) 说它是一个数据框
    • 是的,这样应该很好!
    • 你可以编辑,我会接受作为答案
    猜你喜欢
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多