Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Leemos el fichero p3_train.txt
- ##################################
- setwd("C:/Users/apujol2/Desktop/Aleix/Big Data/Estadistica/Carpeta")
- datos <- read.csv2('p3_train.txt',sep='\t', header=TRUE, dec='.') #usamos la opcion dec = '.' porque sino nos coge las variables como factores.
- str(datos)
- ############################################################
- #Instalamos y cargamos los paquetes
- ############################################################
- # install.packages('FactoMineR')
- library(FactoMineR)
- ############################################################
- # Inspeccionar datos
- ############################################################
- View(datos) # Ver datos
- #onbviar la variable respuesta especie
- datos2 <- datos[,1:561]
- str(datos2)
- # No hacemos un pairs debido a la gran cantidad de variables que tenemos.
- heatmap(as.matrix(scale(datos2)))
- d <- dist(datos2, method = "euclidean")
- hc <- hclust(d,method = "complete")
- hc
- windows(14,7)
- plot(hc,cex=0.7)
- ct <- cutree(hc,6)
- ct
- pr <- princomp(datos2)
- x <- pr$scores[,1]
- y <- pr$scores[,2]
- #plot3
- plot(x,y,col=ct,pch=19)
- t.pred <- table(datos$activity,ct)
- sum(diag(t.pred))/sum(t.pred)
- ###################################################################
- #kmeans
- ###################################################################
- ############################################################
- # Instalar y cargar paquetes
- ############################################################
- # install.packages('scatterplot3d')
- # install.packages('flexclust')
- # install.packages('NbClust')
- library('scatterplot3d')
- library('flexclust')
- library('NbClust')
- ############################################################
- # Objetos dentro del K-means
- ############################################################
- ##-- Prueba simple
- km0 <- kmeans(datos2,centers=6)
- km0$cluster # asignaci�n a los clusteres
- km0$centers # coordenadas de los centros de gravedad
- km0$totss # Inercia total
- km0$withinss # Inercia intra para cada cluster
- #el 1 tiene mas variabilidad
- km0$tot.withinss # Inercia intra (global)
- km0$betweenss # Inercia entre
- km0$size # Tama�o de los clusteres
- km0$iter # Iteraciones para converger
- with(km0,betweenss/totss)
- ############################################################
- # Numero de grupos
- ############################################################
- ##-- Regla del codo
- VE <- c()
- for (k in 2:12){
- km <- kmeans(datos2,centers=k,nstart=10)
- VE[k] <- km$betweenss/km$totss
- }
- windows()
- #plot4
- plot(VE,type="b",pch=19,xlab="N�mero de grupos",ylab="Variabilidad explicada")
- ########################################################################################################
- ##-- Usando un paquete adicional para saber el numero de clusteres
- set.seed(12345)
- #Tal y como hemos visto en la regla del codo hemos dcidido recortar entre 4 y 8 clusters
- ncluster <- NbClust(datos2, min.nc=4, max.nc=6, method="kmeans")
- barplot(table(ncluster$Best.n[1,]))
- ################################################################################################
- ############################################################
- # Representacion grafica
- ############################################################
- ##-- 2 grupos
- km2 <- kmeans(datos2,centers=2,nstart=10)
- # En las 2 primeras componentes
- plot(x,y,pch=19,col=km2$cluster)
- ##-- 3 grupos
- km3 <- kmeans(datos2,centers=3,nstart=10)
- # En las 2 primeras componentes
- plot(x,y,pch=19,col=km3$cluster)
- ##-- 4 grupos
- km4 <- kmeans(datos2,centers=4,nstart=10)
- ##-- En las 2 primeras componentes
- pr.comp <- princomp(datos2)
- x <- pr.comp$scores[,1]
- y <- pr.comp$scores[,2]
- plot(x,y,pch=19,col=km4$cluster)
- ##-- 5 grupos
- km5 <- kmeans(datos2,centers=5,nstart=10)
- # En las 2 primeras componentes
- plot(x,y,pch=19,col=km5$cluster)
- ##-- 6 grupos
- km6 <- kmeans(datos2,centers=6,nstart=10)
- # En las 2 primeras componentes
- plot(x,y,pch=19,col=km6$cluster)
- #nivel de acierto
- t <- table(datos$activity,km2$cluster)
- t
- randIndex(t)
- t <- table(datos$activity,km3$cluster)
- t
- randIndex(t)
- t <- table(datos$activity,km4$cluster)
- t
- randIndex(t)
- t <- table(datos$activity,km5$cluster)
- t
- randIndex(t)
- t <- table(datos$activity,km6$cluster)
- t
- randIndex(t)
- #nos decantamos para 4 clusters ya que tiene un nivel de acierto mas alto
- ################################################################################################################################################################################################
- set.seed(12345) # Semilla para replicar los resultados
- D <- dist(datos2)
- ##-- Clusterizacion jerarquica para obtener los centros
- hc <- hclust(D,method = 'ward.D')
- cl <- cutree(hc,5)
- centers <- apply(datos2,2,tapply,cl,mean)
- ##-- 4 metodos
- km_1 <- kmeans(datos2,4,algorithm='Lloyd',nstart=1) # Metodo 1
- km_2 <- kmeans(datos2,4) # Metodo 2
- km_3 <- kmeans(datos2,4,nstart=10) # Metodo 3
- km_4 <- kmeans(datos2,centers=centers) # Metodo 4
- t <- table(datos$activity,km_3$cluster)
- t
- randIndex(t)
- ################################################################################################################################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement