#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)