Tarea 4
Tarea 4
ipynb - Colaboratory
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from scipy.stats import norm
import scipy.stats as ss
%matplotlib inline
from sklearn.preprocessing import StandardScaler
#1
# Mapeo de valores categóricos a numéricos
attrition_mapping = {v: i for i, v in enumerate(data.Attrition.unique())}
business_travel_mapping = {v: i for i, v in enumerate(data.BusinessTravel.unique())}
department_mapping = {v: i for i, v in enumerate(data.Department.unique())}
education_field_mapping = {v: i for i, v in enumerate(data.EducationField.unique())}
encoded_data = data.copy()
encoded_data['Attrition'] = encoded_data['Attrition'].map(attrition_mapping)
encoded_data['BusinessTravel'] = encoded_data['BusinessTravel'].map(business_travel_mappi
encoded_data['Department'] = encoded_data['Department'].map(department_mapping)
encoded_data['EducationField'] = encoded_data['EducationField'].map(education_field_mappi
[5 rows x 28 columns]
1 Preprocesamiento de datos
a) Filtrar las columnas numéricas: El primer paso es seleccionar solo las columnas que
contienen valores numéricos. Esto permitirá trabajar con las características relevantes para el
análisis, para esto se tiliza la función select_dtypes que permite filtrar las columnas numéricas.
b) Eliminar columnas con varianza cero: Si alguna columna tiene una varianza igual a cero,
significa que todos sus valores son iguales. Estas columnas no aportan información útil y
pueden eliminarse, para esto se verifica si hay columnas con varianza cero y las excluiremos del
conjunto de datos.
c) Estandarizar los datos usando escalado estándar: Para facilitar el análisis, se realiza el
escalamiento de los valores numéricos para que tengan una media de 0 y una desviación
estándar de 1, por lo tanto, se itilizará la clase StandardScaler de Scikit-Learn para estandarizar
los datos.
https://colab.research.google.com/drive/1J6z0n7M4XdLJE7QZdDmi703EX-Mf3D8y#scrollTo=F6b4bT4JmhMY&printMode=true 2/6
2/11/24, 11:14 PM Tarea4.ipynb - Colaboratory
#2
from sklearn.cluster import KMeans
# fitting multiple k-means algorithms and storing the values in an empty list
SSE = []
test_clusters = 10
for cluster in range(1,test_clusters+1):
kmeans = KMeans(n_clusters=cluster, n_init="auto")
kmeans.fit(data_scaled)
SSE.append(kmeans.inertia_)
2 Utilice K-means y realice un análisis de codo para decidir cuántos clusters usar.
https://colab.research.google.com/drive/1J6z0n7M4XdLJE7QZdDmi703EX-Mf3D8y#scrollTo=F6b4bT4JmhMY&printMode=true 3/6
2/11/24, 11:14 PM Tarea4.ipynb - Colaboratory
cuadrados internos (SSE) en el eje y. Permintiendo de esta manera encontrar el punto donde
aparece un “codo” o curva en la gráfica. Este punto representa el número óptimo de clusters. Por
consiguiente, en la gráfica resultante se observa el punto de la curva lo cual es el número 5 el
valor óptimo de clusters para nuestros datos.
#3
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
principalComponents = pca.fit_transform(data_scaled)
pc_transformation = pd.DataFrame(data = principalComponents,
columns = ['PC1', 'PC2'])
kmeans = KMeans(n_clusters=2, n_init="auto").fit(data_scaled)
pc_transformation['Cluster'] = pd.Categorical(kmeans.labels_)
Los puntos se agrupan en dos clusters distintos, representados por diferentes colores.
Cada punto en la gráfica corresponde a una fila de datos del conjunto original.
Los clusters están separados en función de las características transformadas por PCA.
https://colab.research.google.com/drive/1J6z0n7M4XdLJE7QZdDmi703EX-Mf3D8y#scrollTo=F6b4bT4JmhMY&printMode=true 4/6
2/11/24, 11:14 PM Tarea4.ipynb - Colaboratory
#4
kmeans = KMeans(n_clusters=5, n_init="auto").fit(data_scaled)
pc_transformation['Cluster'] = pd.Categorical(kmeans.labels_)
5 De conclusiones:
Después de realizar todo este análisis y procesamiento de datos, se puede extraer algunas
conclusiones:
K-means Clustering: Se aplicó K-means para agrupar los datos en dos clusters, los puntos
en la gráfica están coloreados según el cluster al que pertenecen, estos clusters
representan grupos de observaciones similares en términos de sus características
transformadas.
https://colab.research.google.com/drive/1J6z0n7M4XdLJE7QZdDmi703EX-Mf3D8y#scrollTo=F6b4bT4JmhMY&printMode=true 5/6
2/11/24, 11:14 PM Tarea4.ipynb - Colaboratory
https://colab.research.google.com/drive/1J6z0n7M4XdLJE7QZdDmi703EX-Mf3D8y#scrollTo=F6b4bT4JmhMY&printMode=true 6/6