Ошибка регрессии / классификации в алгоритме KNN для прогнозирования выбора - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь использовать KNN для создания модели прогнозирования выбора. Данные форматируются следующим образом, где я пытаюсь предсказать, выберет ли человек X или Y.

Структура данных с предсказанием выбора

Когда я запускаю код, я получить следующую ошибку:

"В train.default (training [, 1: 7], training [, 8], method =" knn "): вы пытаетесь выполнить регрессию, и ваш результат имеет только два возможные значения Пытаетесь ли вы выполнить классификацию? Если это так, используйте двухуровневый коэффициент в качестве столбца результата. "

Вот остаток соответствующего кода:

index <- createDataPartition(dataset_training$choiceprobX, p=0.5, list=FALSE)
print(dataset_training$choiceprobX)
index
training <- dataset_training[index,]
testing <- dataset_training[-index,]
training
testing
model_knn <- train(training[, 1:7], training[, 8], method='knn')

Что я делать неправильно? Нужно ли переходить на классификацию? Если так, как именно я это делаю?

Ответы [ 2 ]

1 голос
/ 19 марта 2020

У вас целевая переменная в 0,1 цифре c. Вам нужно преобразовать его в коэффициент:

library(caret)

dataset_training = MASS::Pima.te
dataset_training$type = as.numeric(dataset_training$type)-1
head(dataset_training)

  npreg glu bp skin  bmi   ped age type
1     6 148 72   35 33.6 0.627  50    1
2     1  85 66   29 26.6 0.351  31    0
3     1  89 66   23 28.1 0.167  21    0
4     3  78 50   32 31.0 0.248  26    1
5     2 197 70   45 30.5 0.158  53    1
6     5 166 72   19 25.8 0.587  51    1

index <- createDataPartition(dataset_training$type, p=0.5, list=FALSE)
training <- dataset_training[index,]
model_knn <- train(training[, 1:7], training[, 8], method='knn')

Warning message:
In train.default(training[, 1:7], training[, 8], method = "knn") :
  You are trying to do regression and your outcome only has two possible values Are you trying to do classification?[..]

Дает нам ту же ошибку. Теперь преобразуйте его в коэффициент:

dataset_training$type = factor(dataset_training$type)
index <- createDataPartition(dataset_training$type, p=0.5, list=FALSE)
training <- dataset_training[index,]
model_knn <- train(training[, 1:7], training[, 8], method='knn')
0 голосов
/ 18 марта 2020

Хотя я не использую r много, но я могу выяснить некоторые ошибки в коде.

Лучше и менее сложно, если ваша целевая переменная находится в одном столбце, закодированном как 1 и 0

Добавьте новый столбец, который будет вашей целевой переменной, например:

dataset_training$target <- ifelse(dataset_training$choiceprobX == 1,1,0)

Теперь используйте этот столбец в качестве целевой переменной, где 1 означает, что значение класса равно X и 0 означает Y

Теперь, поскольку вы подходите для модели classification, вам необходимо преобразовать эту переменную в factor

dataset_training$target <- as.factor(dataset_training$target)

Теперь попробуйте подобрать модель, вы все равно можете получить некоторые ошибки, которые вы можете оставить в комментариях !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...