Este repositorio contiene un flujo de trabajo completo en R (archivo startup_status_rf.R
) para:
- Limpiar y preparar una base de datos de start-ups (
BD_startups.csv
). - Transformar variables (normalización y label encoding).
- Entrenar un modelo de clasificación Random Forest que predice el estatus de la empresa (
operating
,acquired
,closed
, etc.). - Evaluar el rendimiento con validación cruzada y matriz de confusión.
- Visualizar la importancia de variables y la distribución de estatus.
.
├── BD_startups.csv # Base de datos original
├── startup_status_rf.R # Script principal
└── README.md # Este documento
Paquete | Propósito |
---|---|
dplyr , tidyr |
Limpieza y manipulación de datos |
ggplot2 |
Gráficos |
randomForest |
Entrenamiento del modelo |
caret |
Validación cruzada y métricas |
countrycode |
Conversión de códigos de país (si se requiere) |
rnaturalearth , sf (opcional) |
Mapas y visualizaciones geoespaciales |
rpart , rpart.plot (opcional) |
Árboles de decisión interpretables |
Instalación rápida
install.packages(c(
"dplyr", "tidyr", "ggplot2", "randomForest",
"caret", "countrycode", "rnaturalearth",
"rnaturalearthdata", "sf", "rpart", "rpart.plot"
))
- Clonar / descargar el repositorio y ubicar el archivo
startup_status_rf.R
. - Ajustar la línea
setwd("/wd")
al directorio donde se encuentraBD_startups.csv
. - Ejecutar todo el script (RStudio: Source o
Ctrl + Shift + Enter
; R CLI:source("startup_status_rf.R")
).
Fase | Descripción |
---|---|
Carga y exploración | Se importan los datos, se inspecciona estructura (str , summary ). |
Limpieza | - Se corrigen encabezados. - Se eliminan filas/columnas vacías y duplicados. - Se convierten variables categóricas en factor .- Se normalizan métricas numéricas (función normalize ). |
Codificación | Se aplica label encoding a market y country_code para convertirlos en enteros. |
Partición 80/20 | caret::createDataPartition() para conjuntos de entrenamiento y prueba. |
Entrenamiento | randomForest() con 500 árboles y mtry = 2 . |
Evaluación | - Predicción sobre test. - confusionMatrix de caret .- Validación cruzada (5 folds). |
Visualización | - varImpPlot() de importancia.- Gráfico de barras de estatus. - Heatmap de matriz de confusión con ggplot2 . |
Tras la ejecución se imprimen:
- Resumen del modelo Random Forest (OOB error, precisión por clase).
- Matriz de confusión y métricas (Accuracy, Kappa, Sensitivity, etc.).
- Resultado de validación cruzada (
caret::train
) con media y desviación estándar de accuracy.
- Número de árboles /
mtry
: ajustar en la llamadarandomForest()
. - Variables: modificar
selected_features
para experimentar con columnas adicionales o distintas. - Método de split: cambiar de Random Forest a otro algoritmo (
xgboost
,rpart
) sustituyendo la sección de entrenamiento.
Pregunta | Respuesta |
---|---|
¿Por qué se reemplazan “-” por 0 en funding_total_usd ? |
Algunos registros usan “-” como indicador de “sin financiamiento”. Para modelar se necesitan valores numéricos, por lo que se imputan como 0. |
¿Por qué normalizar las métricas financieras? | Mejora la convergencia y evita que variables en distinta escala dominen el cálculo de distancias internas del modelo. |
¿Puedo usar One-Hot Encoding en vez de label encoding? | Sí. Sustituya el bloque de codificación por model.matrix(~ market + country_code - 1, data) . |
Este proyecto se distribuye bajo licencia MIT. Consulte el archivo LICENSE
para más información.