Encuestas y datos categóricos

Descriptivos multivariante + correlaciones, clustering no supervisado (KMeans + PCA) para descubrir perfiles latentes, y clasificación supervisada (Random Forest) para predicción de categorías objetivo.

Descargar informe PDF

Dataset cargado

1800 registros de 180 sujetos. Fuente ejemplo: Work-From-Home Employee Burnout Dataset (público, Kaggle). Los pipelines aceptan cualquier CSV con features numéricas + variable objetivo categórica.

Método aplicado — descriptivos + correlaciones

Ver código del pipeline
desc = {
    "n": len(df),
    "burnout_media": df["burnout_score"].mean(),
    "burnout_std": df["burnout_score"].std(),
    "burnout_p50": df["burnout_score"].median(),
    "burnout_p90": df["burnout_score"].quantile(0.9),
    "correlacion_workhours": df["work_hours"].corr(df["burnout_score"]),
    "correlacion_sleep": df["sleep_hours"].corr(df["burnout_score"]),
}

Resultado — descriptivos

44.0
burnout medio
SD 23.9
6.5
horas trabajo/día
7.0h
sueño/día
0.12
r horas ↔ burnout
-0.01
r sueño ↔ burnout
Burnout distribution

Distribución de la variable objetivo

CategoríaN
Low1527
Medium253
High20

Método aplicado — clustering no supervisado

Algoritmo

KMeans (scikit-learn 1.9.1) + PCA para proyección 2D.

  • n_clusters = 3
  • n_init = 10 inicializaciones distintas
  • random_state = 42
  • Preprocesado: StandardScaler (z-score)
  • PCA n_components = 2 solo para visualización

Features usadas

  • work_hours
  • screen_time_hours
  • meetings_count
  • breaks_taken
  • sleep_hours
  • task_completion_rate
Ver código del pipeline
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

X = df[features].values
X_scaled = StandardScaler().fit_transform(X)

km = KMeans(n_clusters=3, n_init=10, random_state=42)
labels = km.fit_predict(X_scaled)

# Perfil medio por cluster (características diferenciadoras)
perfil = df.assign(cluster=labels).groupby("cluster")[features + ["burnout_score"]].mean()

# Proyección 2D para visualización
pca = PCA(n_components=2, random_state=42)
coords = pca.fit_transform(X_scaled)

Resultado — perfiles descubiertos

Varianza explicada: PC1 39.4%, PC2 17.0%.

Clusters

Perfil medio por cluster

Cluster work_hoursscreen_time_hoursmeetings_countbreaks_takensleep_hourstask_completion_rate burnout_score
0 8.7211.543.123.086.9969.6 48.18
1 4.727.371.044.177.0877.18 36.61
2 4.837.610.981.676.9271.44 45.24

Método aplicado — clasificación supervisada

Algoritmo

Random Forest Classifier

  • n_estimators = 300
  • random_state = 42
  • Etiqueta codificada con LabelEncoder

Evaluación

Cross-validation 5-fold, métrica accuracy.

  • Clases: High, Low, Medium
  • Features: 7 numéricas

Resultado — clasificación

0.957
Accuracy (CV)
±0.006
7
Features

Feature importance

Feature importance
FeatureImportancia
task_completion_rate0.7700
work_hours0.0606
screen_time_hours0.0601
sleep_hours0.0582
meetings_count0.0228
breaks_taken0.0205
after_hours_work0.0078

Dataset completo — navegable

Total: 1800 filas · 11 columnas.

user_idday_typework_hoursscreen_time_hoursmeetings_countbreaks_takenafter_hours_worksleep_hourstask_completion_rateburnout_scoreburnout_risk