Я пытаюсь подогнать модель KNN и получить границу решения, используя набор данных Auto в пакете ISLR в R.
Здесь мне трудно определить границу решения для задачи 3 класса. Пока это мой код. Я не получаю границы решения.
Я видел где-то еще на этом сайте, ответ на этот вопрос с помощью ggplot. Но я хочу получить ответ классическим способом, используя функцию сюжета.
library("ISLR")
trainxx=Auto[,c(1,3)]
trainyy=(Auto[,8])
n.grid1 <- 50
x1.grid1 <- seq(f = min(trainxx[, 1]), t = max(trainxx[, 1]), l = n.grid1)
x2.grid1 <- seq(f = min(trainxx[, 2]), t = max(trainxx[, 2]), l = n.grid1)
grid <- expand.grid(x1.grid1, x2.grid1)
library("class")
mod.opt <- knn(trainxx, grid, trainyy, k = 10, prob = T)
prob_knn <- attr(mod.opt, "prob")
Моя проблема в основном после этого сегмента кода. Я почти уверен, что должен изменить следующий сегмент. Но я не знаю как. Нужно ли использовать «вложенный, если» здесь?
prob_knn <- ifelse(mod.opt == "3", prob_knn, 1 - prob_knn)
prob_knn <- matrix(prob_knn, n.grid1, n.grid1)
plot(trainxx, col = ifelse(trainyy == "3", "green",ifelse(trainyy=="2", "red","blue")))
title(main = "plot of training data with Desicion boundary K=80")
contour(x1.grid1, x2.grid1, prob_knn, levels = 0.5, labels = "", xlab = "", ylab = "",
main = "", add = T , pch=20)
Будет очень полезно, если кто-нибудь может дать предложение по решению этой проблемы.
В основном мне нужно что-то подобное для задачи 3 класса
https://stats.stackexchange.com/questions/21572/how-to-plot-decision-boundary-of-a-k-nearest-neighbor-classifier-from-elements-o