Я пытаюсь использовать KNN для создания прогноза для исходной переменной на основе набора данных, который я получил от kaggle. Набор данных содержит более 600 тыс. Строк и 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? любая помощь приветствуется.