错误:KNN算法中不允许缺少任何值?

时间:2019-04-04 11:57:03

标签: r knn

我正在尝试使用KNN根据我从kaggle下获得的数据集为结果变量创建预测。该数据集有超过60万行和31个变量。将数据分为训练和测试之后,我尝试将其实现为KNN算法,但出现错误:不允许丢失任何值。

我尝试使用以下行在我的数据集中查找缺失值,但是都返回0-意味着没有缺失值?

sum(is.na(AlertDataset))
summary(AlertDataset)
sum(!complete.cases(AlertDataset))

AlertDataset <- read.csv("fordTrain.csv", stringsAsFactors = FALSE)
str(AlertDataset)
# Remove 2 'ID' columns
AlertDataset <- AlertDataset[-1]
AlertDataset <- AlertDataset[-1]
str(AlertDataset)

sum(is.na(AlertDataset))
summary(AlertDataset)
sum(!complete.cases(AlertDataset))
# table of diagnosis
table(AlertDataset$IsAlert)

AlertDataset$IsAlert <- factor(AlertDataset$IsAlert,
                         levels = c(1, 0),
                         labels = c("Alert", "Drowsy"))

round(prop.table(table(AlertDataset$IsAlert)) * 100, digits = 1)

normalize <- function(x) {
  return ((x - min(x)) / (max(x) - min(x)))
}

AlertDataset_n <- as.data.frame(lapply(AlertDataset[1:30], normalize))

summary(AlertDataset_n$P1)

AlertDataset_train <- AlertDataset_n[1:483463, ]
AlertDataset_test <- AlertDataset_n[483464:604330, ]

AlertDataset_train_labels <- AlertDataset[1:483463, 1]
AlertDataset_test_labels <- AlertDataset[483464:604330, 1]

library(class)
#Error occurs here!!!
AlertDataset_test_pred <- knn(train = AlertDataset_train, test = AlertDataset_test, cl = AlertDataset_train_labels, k=7)

library(gmodels)

CrossTable(x = AlertDataset_test_labels, y = AlertDataset_test_pred,
           prop.chisq=FALSE)

有什么想法可以解决这个问题吗?所以我在R中遇到缺失值错误,但是在搜索数据集时找不到缺失值吗? 是因为我有一些负值,例如-1.75?任何帮助表示欢迎。

0 个答案:

没有答案