Instalamos los paquetes necesarios para este laboratorio. Los nuevos son factorextra y dbscan
Cargamos los paquetes necesarios y las base de datos
library(data.table)
library(factoextra)
library(dbscan)
library(ggplot2)
Mall_Costumers.csvclientes<-fread("/Users/magdalena/Downloads/Mall_Customers.csv")
head(clientes)
## CustomerID Genre Age Annual Income (k$) Spending Score (1-100)
## 1: 1 Male 19 15 39
## 2: 2 Male 21 15 81
## 3: 3 Female 20 16 6
## 4: 4 Female 23 16 77
## 5: 5 Female 31 17 40
## 6: 6 Female 22 17 76
summary(clientes)
## CustomerID Genre Age Annual Income (k$)
## Min. : 1.00 Length:200 Min. :18.00 Min. : 15.00
## 1st Qu.: 50.75 Class :character 1st Qu.:28.75 1st Qu.: 41.50
## Median :100.50 Mode :character Median :36.00 Median : 61.50
## Mean :100.50 Mean :38.85 Mean : 60.56
## 3rd Qu.:150.25 3rd Qu.:49.00 3rd Qu.: 78.00
## Max. :200.00 Max. :70.00 Max. :137.00
## Spending Score (1-100)
## Min. : 1.00
## 1st Qu.:34.75
## Median :50.00
## Mean :50.20
## 3rd Qu.:73.00
## Max. :99.00
names(clientes)
## [1] "CustomerID" "Genre" "Age"
## [4] "Annual Income (k$)" "Spending Score (1-100)"
names(clientes)<-c("ID","gender","age","income","SpSc")
clientes[gender=="Male",male:=1]
clientes[gender!="Male",male:=0]
data_cl<-clientes[,.(age,income)]
ggplot(data = data_cl,aes(x=age,y=income))+
geom_point()
kmeans para obtener nuestros clusterk1<-kmeans(x=data_cl,centers=5 ,nstart=25)
fviz_cluster(k1,data=data_cl,geom = "point")
clientes$clkme<-k1$cluster
kNNdistplot(x=data_cl,k=3)
En este gráfico, debemos mirar en qué distancia comienza el incremento más acentuado para definir el radio. En este caso, podemos ver que para la distancia 5 comienza a crecer exponencialmente (para 3 vecinos). Consdierar que esto va a depender de la cantidad de vecinos que fijemos.
k2<-dbscan(x=data_cl,eps = 5,minPts = 3)
fviz_cluster(k2,data=data_cl,geom = "point")
clientes$cldbscan<-k2$cluster