Ошибка KNN: «поезд» и «класс» имеют разную длину

#r

Вопрос:

Я надеюсь запустить KNN со следующими двумя кадрами данных. Ниже приведена информация о данных(уже масштабированных). age и lr_scale были бы особенности и euRefVoteAfter является переменной результата.

 head(training) # A tibble: 6 x 3  age lr_scale euRefVoteAfter  lt;dblgt; lt;dblgt; lt;dbl lblgt; 1 -1.20 -0.808 0 [Rejoin the EU]  2 1.25 -1.29 1 [Stay out of the EU] 3 0.636 0.886 0 [Rejoin the EU]  4 0.0245 -0.324 1 [Stay out of the EU] 5 -1.26 0.402 0 [Rejoin the EU]  6 -0.770 0.402 0 [Rejoin the EU]    gt; head(testing) # A tibble: 6 x 3  age lr_scale euRefVoteAfter  lt;dblgt; lt;dblgt; lt;dbl lblgt; 1 -1.20 -0.808 0 [Rejoin the EU]  2 1.25 -1.29 1 [Stay out of the EU] 3 0.636 0.886 0 [Rejoin the EU]  4 0.0245 -0.324 1 [Stay out of the EU] 5 -1.26 0.402 0 [Rejoin the EU]  6 -0.770 0.402 0 [Rejoin the EU]   

И я запускаю следующие коды:

 y_pred lt;- knn(train = training[, -3],  test = testing[, -3],  cl = training[,3],  k = 3,  prob = FALSE)  

И я получил сообщение 'train' and 'class' have different lengths . Я нашел какое-то решение, чтобы исправить эту ошибку, и повторите попытку следующим образом:

 v1=training[,3] y_pred lt;- knn(train = training[, -3],  test = testing[, -3],  cl = v1,  k = 3,  prob = FALSE)  

Но появилось то же самое сообщение об ошибке. Я уверен, что длина переменных одинакова

 gt; length(training$euRefVoteAfter) [1] 26026 gt; length(training$age) [1] 26026 gt; length(training$lr_scale) [1] 26026  

Если кто-то может помочь мне с этой проблемой, я был бы очень признателен.

Комментарии:

1. Немного подозрительно, что ваши данные по обучению и тестированию (как показано на рисунке) идентичны.

2. @G5W спасибо, что указал на это, я не понял. То, что я сделал, — это просто разбил один фрейм данных на два с помощью split lt;- sample.split(bes2$euRefVoteAfter,SplitRatio = 0.75) training lt;- subset(bes2, split=T,na.rm=T) testing lt;- subset(bes2,split=F,na.rm=T)