AnaliAnálisis de cluscluster
title: “Tarea Cluster : solucion” output: html_document: keep_md: true df_print: paged theme: spacelab toc: yes editor_options: chunk_output_type: console
1 #setwd("P:/Diplomado Data Analytics/Modulo 3 AMV/clase 29\
2 Nov")
3 #
4 # Cargar datos
5 data(mtcars)
6 str(mtcars)
7 attach(mtcars)
1 #mtcars is a data frame with 32 observations on 11 (numer\
2 ic) variables.
3
4 [, 1] mpg Miles/(US) gallon
5 [, 2] cyl Number of cylinders
6 [, 3] disp Displacement (cu.in.)
7 [, 4] hp Gross horsepower
8 [, 5] drat Rear axle ratio
9 [, 6] wt Weight (1000 lbs)
10 [, 7] qsec 1/4 mile time
11 [, 8] vs Engine (0 = V-shaped, 1 = straight)
12 [, 9] am Transmission (0 = automatic, 1 = manual)
13 [,10] gear Number of forward gears
14 [,11] carb Number of carburetors
1 #
2 pairs(mtcars, main="matriz de parejas devariable", pch=19\
3 , col="blue")
Grafica de mpg vs hp
comentario
1 library(ggplot2)
2 ggplot(mtcars, aes(mpg,hp)) + geom_point()
Grafica de dips vs wt
1 #
2 ggplot(mtcars, aes(disp,wt)) + geom_point()
Realiza también una gráfica que muestre todas las posibles combinaciones :
Combinaciones entre todas las variables
1 #
2 library(GGally)
3 ggpairs(mtcars, aes(color=factor(gear)), title = "Grafica\
4 de todas las variables")
Después realiza un escalamiento de las variables previo al análisis de clúster y usa esta nueva base para el análisis. (el código de escalamiento está en el archivo)
1 # Escalar datos
2 mtcars_scaled <- data.frame(scale(mtcars))
Realiza un análisis de clúster jerárquico y selecciona cuantos clústeres posibles sé pueden formar :
Calculo de la Matriz de Distancias Euclidianas
1 distancias <- dist(mtcars_scaled, method = "euclidean")
Calcula el dendograma de la matriz de distancias
1 (dendograma <- hclust(distancias, method = "ward.D2"))
Gráfica del Dendograma para k=5
1 plot(dendograma)
2 rect.hclust(dendograma, k=5, border = "blue")
Gráfica del Dendograma para k=6
1 plot(dendograma)
2 rect.hclust(dendograma, k=6, border = "blue")
Realiza ahora un análisis de K-means para calcular con mayor precisión el número de clúster :
1 set.seed(550)
2 k <- list()
3 for (i in 1:10) {
4 k[[i]]=kmeans(mtcars_scaled, i )
5 }
Gráfica de la base para k=4 por Kmeans
1 plot(mtcars_scaled, col=k[[4]]$cluster)
Gráfica de la base para k=6 por Kmeans
1 plot(mtcars_scaled, col=k[[6]]$cluster)
Calcular el % de cambio en las distancias
1 betweens <- list()
2 for (i in 1:10) { betweens[[i]] = (k[[i]]$betweenss / k\
3 [[i]]$totss)*100 }
Grafica del % vs Numero de cluster
1 plot(1:10,betweens, type = "b", xlab = "Numero de cluster\
2 s")
3 grid()
Concluye cuál será el número más adecuado de clúster a formar :
1 Analisis :
2 La base de datos se encontrario bien representada con6 cl\
3 usters pues estarian congruentes con los analisis de clus
4 ter herarquico y k-means