Как построить границы решения для графика анализа линейной дискриминации в R с использованием 3 входных переменных - PullRequest
0 голосов
/ 28 июня 2019

Я хотел бы построить границы решений LDA для матрицы с 3 входными переменными и 2 классами. Я мог бы найти некоторый код для построения границ, если бы только 2 входных переменных были заданы LDA, но код, который я нашел для 3 входных переменных, дает неправильную границу.

# With 2 input variables

attach(iris)

index=Species!="versicolor"

iris=iris[index,]

LDA <- lda(Species ~ Sepal.Length + Sepal.Width, data=iris)
GS <- 500
x1 <- seq(min(Sepal.Length), max(Sepal.Length), len=GS)
x2 <- seq(min(Sepal.Width), max(Sepal.Width), len=GS)
x <- expand.grid(x1, x2)
newdat <- data.frame(Sepal.Length=x[,1], Sepal.Width=x[,2])

lda.Ghat <- as.numeric(predict(LDA, newdata=newdat)$class)

plot(Sepal.Length,Sepal.Width,col=Species)
contour(x1, x2, matrix(lda.Ghat, GS,GS), 
levels=c(1,2),add=TRUE,drawlabels=FALSE, col="red")
legend("topright",legend=c('setosa','virginica'),fill=c("black","green"))

# With 3 input variables

LDA <- lda(Species ~ Sepal.Length + Sepal.Width + Petal.Length,data=iris)
GS <- 500
x1 <- seq(min(Sepal.Length), max(Sepal.Length), len=GS)
x2 <- seq(min(Sepal.Width), max(Sepal.Width), len=GS)
x <- expand.grid(x1, x2)

newdat <-data.frame(Sepal.Length=x[,1],Sepal.Width=x[,2],Petal.Length=mean(Petal.Length))

lda.Ghat <- as.numeric(predict(LDA, newdata=newdat)$class)

plot(Sepal.Length,Sepal.Width,col=Species)

contour(x1,x2,matrix(lda.Ghat,GS,GS),levels=c(1,2),add=TRUE,drawlabels=FALSE,col="red")

legend("topright",legend=c('setosa','virginica'),fill=c("black","green"))
...