Ошибка: пропущенные значения не допускаются в алгоритме KNN? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь использовать 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? любая помощь приветствуется.

...