Hola Raúl.

No he visto tu código en profundidad, pero puede ser que en el último gráfico estás llamando a g, que es ggplot creado para los datos de entrenamiento y le pintes la predicción de los datos de test. Deberías pintar los datos de test y su predicción. Quizá esto te valga.

g2 <- ggplot(test,aes(test$x,test$y)) +
    geom_point()

g2 + geom_point(aes(colour = predict(knn.Cuadrado,test.Cuadrado)))+
    ggtitle("Un poco menos mojón ")


El 28/10/14 a las 18:06, "Raúl Vaquerizo" escribió:
#Datos
#Se trata de una nube de puntos en el plano
long = 10000
x <- runif(long,1,100)
y <- runif(long,1,100)
datos <- data.frame(x,y)

#Creamos un conjunto de datos de entrenamiento y otro de test
indices <- sample(1:long,long/2)
entrenamiento <- datos[indices,]
test <- datos[-indices,]


#Preparamos un gráfico de dispersión
library(ggplot2)
g <- ggplot(entrenamiento,aes(entrenamiento$x,entrenamiento$y)) +
geom_point()

#g

#Vamos a crear las clases que nos un cuadrado
C <- ifelse(entrenamiento$x>20 & entrenamiento$x<80 & entrenamiento$y>20
&entrenamiento$y<80,1,0)

#Pintamos en nuestra nube de puntos ese cuadrado
g + geom_point(aes(colour = C))+ opts(title="PINTAMOS UN CUADRADO")

#Comenzamos a trabajar con knn
#La librería será kknn
library(kknn)

#Voy a buscar el mejor modelo k maximo 10 y unas funciones kernel
entreno.Cuadrado<-cbind(C,entrenamiento)
aprox.Cuadrado <- train.kknn(C ~ x + y, data = entreno.Cuadrado,
        kmax = 10, kernel = c("rectangular", "triangular", "epanechnikov",
        "gaussian", "rank"))
plot(aprox.Cuadrado)

#Triangular con k=4 es el que mejor pinta tiene si pintáis los
fitted.values queda de lujo
test.Cuadrado<-cbind(C,test)
knn.Cuadrado <-
kknn(C~x+y,entreno.Cuadrado,test.Cuadrado,k=4,kernel="triangular")

g + geom_point(aes(colour = predict(knn.Cuadrado,test.Cuadrado)))+
opts(title="PINTAMOS UN MOJÓN")

_______________________________________________
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a