Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1.  
  2.  
  3. #Leemos el fichero p3_train.txt
  4. ##################################
  5.  
  6. setwd("C:/Users/apujol2/Desktop/Aleix/Big Data/Estadistica/Carpeta")
  7. datos <- read.csv2('p3_train.txt',sep='\t', header=TRUE, dec='.') #usamos la opcion dec = '.' porque sino nos coge las variables como factores.
  8.  
  9. str(datos)
  10. ############################################################
  11. #Instalamos y cargamos los paquetes
  12. ############################################################
  13.  
  14. # install.packages('FactoMineR')
  15. library(FactoMineR)
  16.  
  17. ############################################################
  18. # Inspeccionar datos
  19. ############################################################
  20.  
  21. View(datos) # Ver datos
  22. #onbviar la variable respuesta especie
  23. datos2 <- datos[,1:561]
  24. str(datos2)
  25.  
  26. # No hacemos un pairs debido a la gran cantidad de variables que tenemos.
  27.  
  28. heatmap(as.matrix(scale(datos2)))
  29.  
  30.  
  31. d <- dist(datos2, method = "euclidean")
  32.  
  33. hc <- hclust(d,method = "complete")
  34. hc
  35.  
  36. windows(14,7)
  37. plot(hc,cex=0.7)
  38.  
  39. ct <- cutree(hc,6)
  40. ct
  41. pr <- princomp(datos2)
  42. x <- pr$scores[,1]
  43. y <- pr$scores[,2]
  44. #plot3
  45. plot(x,y,col=ct,pch=19)
  46.  
  47. t.pred <- table(datos$activity,ct)
  48.  
  49. sum(diag(t.pred))/sum(t.pred)
  50.  
  51.  
  52. ###################################################################
  53. #kmeans
  54. ###################################################################
  55.  
  56. ############################################################
  57. # Instalar y cargar paquetes
  58. ############################################################
  59. # install.packages('scatterplot3d')
  60. # install.packages('flexclust')
  61. # install.packages('NbClust')
  62. library('scatterplot3d')
  63. library('flexclust')
  64. library('NbClust')
  65.  
  66.  
  67. ############################################################
  68. # Objetos dentro del K-means
  69. ############################################################
  70. ##-- Prueba simple
  71. km0 <- kmeans(datos2,centers=6)
  72. km0$cluster # asignaci�n a los clusteres
  73. km0$centers # coordenadas de los centros de gravedad
  74. km0$totss # Inercia total
  75. km0$withinss # Inercia intra para cada cluster
  76. #el 1 tiene mas variabilidad
  77. km0$tot.withinss # Inercia intra (global)
  78. km0$betweenss # Inercia entre
  79. km0$size # Tama�o de los clusteres
  80. km0$iter # Iteraciones para converger
  81.  
  82. with(km0,betweenss/totss)
  83.  
  84.  
  85. ############################################################
  86. # Numero de grupos
  87. ############################################################
  88. ##-- Regla del codo
  89. VE <- c()
  90. for (k in 2:12){
  91. km <- kmeans(datos2,centers=k,nstart=10)
  92. VE[k] <- km$betweenss/km$totss
  93. }
  94. windows()
  95. #plot4
  96. plot(VE,type="b",pch=19,xlab="N�mero de grupos",ylab="Variabilidad explicada")
  97.  
  98. ########################################################################################################
  99. ##-- Usando un paquete adicional para saber el numero de clusteres
  100. set.seed(12345)
  101. #Tal y como hemos visto en la regla del codo hemos dcidido recortar entre 4 y 8 clusters
  102. ncluster <- NbClust(datos2, min.nc=4, max.nc=6, method="kmeans")
  103.  
  104. barplot(table(ncluster$Best.n[1,]))
  105.  
  106.  
  107. ################################################################################################
  108.  
  109. ############################################################
  110. # Representacion grafica
  111. ############################################################
  112. ##-- 2 grupos
  113. km2 <- kmeans(datos2,centers=2,nstart=10)
  114.  
  115. # En las 2 primeras componentes
  116. plot(x,y,pch=19,col=km2$cluster)
  117.  
  118. ##-- 3 grupos
  119. km3 <- kmeans(datos2,centers=3,nstart=10)
  120.  
  121. # En las 2 primeras componentes
  122. plot(x,y,pch=19,col=km3$cluster)
  123.  
  124. ##-- 4 grupos
  125. km4 <- kmeans(datos2,centers=4,nstart=10)
  126.  
  127. ##-- En las 2 primeras componentes
  128. pr.comp <- princomp(datos2)
  129. x <- pr.comp$scores[,1]
  130. y <- pr.comp$scores[,2]
  131. plot(x,y,pch=19,col=km4$cluster)
  132.  
  133.  
  134. ##-- 5 grupos
  135. km5 <- kmeans(datos2,centers=5,nstart=10)
  136.  
  137. # En las 2 primeras componentes
  138. plot(x,y,pch=19,col=km5$cluster)
  139.  
  140. ##-- 6 grupos
  141. km6 <- kmeans(datos2,centers=6,nstart=10)
  142.  
  143. # En las 2 primeras componentes
  144. plot(x,y,pch=19,col=km6$cluster)
  145.  
  146.  
  147.  
  148.  
  149.  
  150. #nivel de acierto
  151. t <- table(datos$activity,km2$cluster)
  152. t
  153. randIndex(t)
  154. t <- table(datos$activity,km3$cluster)
  155. t
  156. randIndex(t)
  157. t <- table(datos$activity,km4$cluster)
  158. t
  159. randIndex(t)
  160. t <- table(datos$activity,km5$cluster)
  161. t
  162. randIndex(t)
  163. t <- table(datos$activity,km6$cluster)
  164. t
  165. randIndex(t)
  166. #nos decantamos para 4 clusters ya que tiene un nivel de acierto mas alto
  167.  
  168.  
  169.  
  170. ################################################################################################################################################################################################
  171.  
  172. set.seed(12345) # Semilla para replicar los resultados
  173. D <- dist(datos2)
  174. ##-- Clusterizacion jerarquica para obtener los centros
  175. hc <- hclust(D,method = 'ward.D')
  176. cl <- cutree(hc,5)
  177. centers <- apply(datos2,2,tapply,cl,mean)
  178.  
  179. ##-- 4 metodos
  180. km_1 <- kmeans(datos2,4,algorithm='Lloyd',nstart=1) # Metodo 1
  181. km_2 <- kmeans(datos2,4) # Metodo 2
  182. km_3 <- kmeans(datos2,4,nstart=10) # Metodo 3
  183. km_4 <- kmeans(datos2,centers=centers) # Metodo 4
  184.  
  185. t <- table(datos$activity,km_3$cluster)
  186. t
  187. randIndex(t)
  188.  
  189.  
  190. ################################################################################################################################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement