El resultado conceptual seria el siguiente:
#----------------------------------------------------------------------- #Carga package y datos necesarios suppressWarnings(library(C50)); library(flexclust); data(churn); #----------------------------------------------------------------------- # fija secuencia aleatoria y carga datos historicos y nuevos set.seed(6) Clientes_Hisoricos <- churnTrain[,c(9,11,12)] Clientes_Nuevos <- churnTest[1:5,c(9,11,12)] #----------------------------------------------------------------------- # Crea Modelo Kmeans Modelo <-kcca(Clientes_Hisoricos, k = 3, family = kccaFamily("kmeans"), save.data = TRUE) #----------------------------------------------------------------------- # Asigna el campo Grupo a la tabla de clientes Historicos y Nuevos Clientes_Hisoricos$Grupo <- clusters(Modelo) Clientes_Nuevos$Grupo <- clusters(Modelo,Clientes_Nuevos) #----------------------------------------------------------------------- # Crea componentes principales para graficar ACP_Historico <-prcomp(Clientes_Hisoricos) ACP_Nuevos <-prcomp(Clientes_Nuevos) #----------------------------------------------------------------------- #Grafica kmeans de clientes Historico plot(ACP_Historico$x[,1:2],col=Clientes_Hisoricos$Grupo ) #----------------------------------------------------------------------- # Grafica clientes nuevos points(ACP_Nuevos$x[,1],ACP_Nuevos$x[,2], col=Clientes_Nuevos$Grupo, pch = 19, cex=3.1)
Referencia:
Hola Enmanuel,
ResponderEliminarMuy ilustrativo tu ejemplo, gran trabajo!
Un apunte que no doy a que se deberá, ejecutando el código en R, el plot resultante difiere al que muestras en la imagen. de manera que ACP_Nuevos no corresponden a los de la imagen y los clasifica mal, una forma artesanal que me he dado cuenta que lo corrige es multiplicando por -1 las compnentes que obtiene de los clientes nuevos ya que los devuelve por alguna razón invertidos...
si tienes alguna pista de porqué entrega los puntos de clientes nuevos del plot invertido estaría bien que lo comentases, ya que la finalidad es clasificar los nuevos clientes sin ejecutar el codigo otra vez y de este modo no lo consigue..
Gracias