私はcontour
関数を使ってプロットしているKNNモデルを持っています。これは、(this Purdue examに基づいて)私がやっているものの種類の簡単な例です:ggplotのKNNモデルの輪郭?
library(class)
library(nnet)
TrainC<-read.table("http://miner.chem.purdue.edu/Exam1/TrainC.dat")
names(TrainC)<-c("x1","x2","y")
K=15
p <- as.matrix(TrainC[, -3])
xp <- seq(min(TrainC$x1), max(TrainC$x1), length = 50); np <- length(xp)
yp <- seq(min(TrainC$x2), max(TrainC$x2), length = 50)
tp<-TrainC$y
yhat <- knn(p, p, tp, k = K)
plot(TrainC[, 1], TrainC[, 2], xlab = "x1", ylab = "x2", col=as.numeric(TrainC$y)+1)
pt <- expand.grid(x1 = xp, x2 = yp)
Z <- knn(p, pt, tp, k = K)
zp<-class.ind(Z)[,1] - class.ind(Z)[,2]
contour(xp, yp, matrix(zp, np), add = T, levels = 0, labex = 0)
私の質問は:どのように私はggplotでこれと同じプロットを作ることができますか?特に、contour
と同等の処理を行うにはどうすればよいですか?
あなたのコードには "class.ind"という関数があるパッケージ名がありません。そのエラーを過ぎても、npがどこに定義されているのかわかりません。 –
@DWin申し訳ありません... class.indは 'nnet'のものです。これが修正されます。 npは、xpが定義されている行(セミコロンの後)で定義されます。 – griffin