Я пытаюсь использовать функцию knn (из пакета классов) в моем наборе данных. Он имеет 5 столбцов функций, а 6-й - это то, что я хочу предсказать. Я занимаюсь сексом 70/30.Ошибка в knn 'train' и 'class' имеют разную длину
Вот мой код:
> ind <- createDataPartition(CSD$Caesarian, p=0.70, list=FALSE)
> csd_train <- CSD[ ind,]
> csd_test <- CSD[-ind,]
> c1 <- CSD[1:6,-c(1,2,3,4,5)]
> knn(train, test, c1, k=2, prob=TRUE)
Но я получаю эту ошибку.
Error in knn(train, test, c1, k = 2, prob = TRUE) :
'train' and 'class' have different lengths
Я посмотрел на других потоков и пытается их предлагались пути решения (KNN in R: 'train and class have different lengths'?)
и попытался следующие, но я все еще получаю ошибки
> c1 = as.factor(c1)
> dim(csd_train)
[1] 57 6
> dim(csd_test)
[1] 23 6
> length(c1)
[1] 6
> knn(train, test, c1, k=2, prob=TRUE)
Error in knn(train, test, c1, k = 2, prob = TRUE) :
'train' and 'class' have different lengths
Я также попробовал это, и до сих пор получение ошибки.
> c1 = as.factor(CSD[['Caesarian']])
> knn(train, test, c1, k=2, prob=TRUE)
Error in knn(train, test, c1, k = 2, prob = TRUE) :
'train' and 'class' have different lengths
Я потерян относительно того, как исправить это.
Вот пример моих данных, если это помогает:
> dput(head(CSD))
structure(list(Age = c(22L, 26L, 26L, 28L, 22L, 26L), Delivery.NO = c(1L,
2L, 2L, 1L, 2L, 1L), Delivery.NO.1 = c(1L, 1L, 0L, 1L, 1L, 0L
), BP = c(2L, 1L, 1L, 2L, 1L, 0L), Heart.Problem = c(1L, 1L,
1L, 1L, 1L, 1L), Caesarian = structure(c(1L, 2L, 1L, 1L, 2L,
1L), .Label = c("N", "Y"), class = "factor")), .Names = c("Age",
"Delivery.NO", "Delivery.NO.1", "BP", "Heart.Problem", "Caesarian"
), row.names = c(NA, 6L), class = "data.frame")
EDIT Я сделал
c1 <- csd_train[, 6]
и длина (c1) теперь 57, и это хорошо. Однако, когда я бегу Knn линию, я теперь получаю эту новую ошибку:
Error in knn(csd_train, csd_test, c1, k = 2, prob = TRUE) : NA/NaN/Inf in `foreign function call (arg 6) In addition: Warning messages: 1: In` `knn(csd_train, csd_test, c1, k = 2, prob = TRUE) : NAs introduced by coercion 2:` `In knn(csd_train, csd_test, c1, k = 2, prob = TRUE) : NAs introduced by coercion`
Все мои предикторов являются числовыми, и нет пропущенных значений.
Можете ли вы предоставить воспроизводимый пример вашей ошибки? – Alex
Что вы делаете в строке 4 ('> c1 <- CSD [1: 6, -c (1,2,3,4,5)]'? – Alex
Я хочу, чтобы c1 был только последним столбцом - строка четыре включает cols 1-6, но исключает cols 1-5, оставив только столбец 6. –