R中对象-随机林混淆矩阵中缺少值

R中对象-随机林混淆矩阵中缺少值,r,random-forest,confusion-matrix,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 <- nearZeroV

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

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)
这导致了同样的错误。 如果我使用:

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

dt_模型正如@lukeA提到的,由于NA值,我遇到了问题。
另一个对我有效的选择是多清理一点数据

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

training
randomForest()
的默认值
na.action=na.fail
。因此,它(在我的机器上)坏了。您可以将其设置为`
na.action=na.ommit
,例如,如果您愿意省略
na
training <- training[, colSums(is.na(training)) == 0]