【问题标题】:missing values in object - Random Forest Confusion Matrix in R对象中的缺失值 - R 中的随机森林混淆矩阵
【发布时间】:2016-05-07 15:25:40
【问题描述】:

我试图在没有成功拟合模型后获得混淆矩阵。相反,使用相同的代码和决策树,没有问题。这是我的代码:

library(caret)
library(randomForest)

training <- read.csv("https://d396qusza40orc.cloudfront.net/predmachlearn/pml-training.csv", na.strings=c("#DIV/0!"), row.names = 1)

to_exclude <- nearZeroVar(training)
training <- training[, -to_exclude]

set.seed(1234)
train_idx <- createDataPartition(training$classe, p = 0.8, list = FALSE)
train <- training[train_idx,]
validation <- training[-train_idx,]

rf_model <- randomForest(classe ~ . , data=train, method="class")
rf_validation <- predict(rf_model, validation, type="class")

confusionMatrix(rf_validation, validation$classe)

这是错误:

na.fail.default(list(classe = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, : 对象中的缺失值

我也试试这个:

table(rf_validation, validation$classe)

这导致了同样的错误。 如果我使用:

dt_model <- rpart(classe ~ ., data=train, method="class")

相反,一切正常。

我错过了什么?

【问题讨论】:

  • randomForest() 的默认 na.action=na.fail。因此,它坏了(在我的机器上)。例如,如果您愿意省略 NA 值,则可以将其设置为 `na.action=na.omit
  • # coursera 问题

标签: r random-forest confusion-matrix


【解决方案1】:

正如@lukeA 所提到的,由于 NA 值,我遇到了问题。 另一个对我有用的选择是多清理我的数据。:

training <- training[, colSums(is.na(training)) == 0]

移除由 NA 值形成的特征。

【讨论】:

    猜你喜欢
    • 2018-03-30
    • 1970-01-01
    • 2020-06-01
    • 2021-07-08
    • 2020-11-17
    • 2021-08-17
    • 2020-04-03
    • 2018-02-18
    • 2012-01-12
    相关资源
    最近更新 更多