K-Means | Analisis ~ Base de Datos “Mall customers”

Segmentación y análisis de clientes

Pasos para resolver el problema :

  1. Importación de bibliotecas.
  2. Exploración de datos.
  3. Visualización de los datos.
  4. Clusterización mediante K-Means.
  5. Selección de Clusters.
  6. Trazado de los límites de los clusters y de los clusters.
  7. Trazado en 3D de los clusters.

Importar bibliotecas.

import numpy as np # linear algebra

import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

import matplotlib.pyplot as plt

import seaborn as sns

import plotly as py

import plotly.graph_objs as go

from sklearn.cluster import KMeans

import warnings

import os

warnings.filterwarnings(“ignore”) py.offline.init_notebook_mode(connected = True) print(os.listdir(“../input”))

Descripcion de la base de datos

Utilizaremos los conjuntos de datos de demostración mall_customers . Los datos utilizados aquí describen Los ingresos y gasto de un grupo de un conjunto de datos indicadores economicos complados por el gobierno de Estados Unidos entre los años 1970 y 2017.

  • CustomerID : Identificación del cliente
  • Gender : Genero, Masculino o Femenino
  • Age : Edad
  • Annual.Income..k : Ingresos anuales
  • Spending.Score..1.100. : Puntos de Gastos

Exploración de datos

library(readr)
library(shape)
## Warning: package 'shape' was built under R version 4.1.1
df <- read.csv("C:/Users/HP/Downloads/mall_customers.csv") 
head(df)
##   CustomerID Gender 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

mall_customers esta almacenado en un data.frame, sabemos que es del tipo rectangular con filas y columnas. Use la función dim() para conocer exactamente el número de filas y columnas.

dim (df)
## [1] 200   5
summary(df)
##    CustomerID        Gender               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