我正在尝试使用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?任何帮助表示欢迎。