对象中的缺失值 - R中的随机森林混淆矩阵

时间:2016-01-29 19:10:05

标签: r random-forest confusion-matrix

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

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中的错误(列表(classe = c(1L,1L,1L,1L,1L,1L,1L,1L,:     对象中缺少值

我也试试这个:

table(rf_validation, validation$classe)

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

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

相反,一切正常。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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

删除由NA值形成的要素。