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

4

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

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")

然而,一切都正常运作。

我错过了什么吗?


4
randomForest()函数默认的na.actionna.fail。因此,在我的计算机上会出错。你可以将其设置为na.action=na.omit,例如,如果你愿意省略NA值。 - lukeA

Coursera问题

- jtlz2
1个回答

2

正如@lukeA所提到的,我遇到了由于NA值引起的问题。 对我有用的另一个选项是更加清洁我的数据。

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

删除由NA值形成的特征。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接