Feature engineering con pandas para fútbol

Resumen

Crear nuevas variables a partir de datos existentes es una de las jugadas más poderosas en machine learning. Esta técnica, conocida como feature engineering, te permite transformar datos crudos en información que los modelos predictivos sí pueden entender, y aquí vas a ver cómo aplicarla a un dataset de fútbol para predecir resultados.

¿Qué es el feature engineering y por qué importa tanto?

Es el arte de convertir datos sin procesar en señales útiles para un modelo. A veces los datos tal como llegan no le dicen nada claro al algoritmo, pero si tú, como analista, construyes variables más informativas, el modelo detecta patrones más profundos.

¿Qué es feature engineering? Es el proceso de crear nuevas variables a partir de las existentes para que un modelo de machine learning aprenda mejor. Por ejemplo, en lugar de pasar goles y posesión por separado, le das la diferencia de goles o el ratio tiros/posesión.

Piensa en esto como hablarle al director técnico: no solo le dices cuántos tiros hicimos, sino qué tan eficientes fuimos con ellos. Esa diferencia de contexto es la que mueve la aguja. Y aquí viene lo interesante: muchas veces una sola variable nueva mejora más el modelo que cambiar de algoritmo por completo [0:54].

¿Qué variables nuevas vamos a crear con pandas?

Para este dataset de partidos del equipo Cebollitas, vamos a construir dos features que aportan contexto real al modelo predictivo [1:35]:

  • Diferencia de goles: goles de local menos goles de visitante. Sirve como variable objetivo o target para predecir si el equipo gana, empata o pierde.
  • Ratio tiros/posesión local: tiros a puerta divididos por porcentaje de posesión. Mide qué tan bien capitalizas tener la pelota.

No basta con tener el balón; hay que rematar y ganar partidos.

¿Cómo se programa esto en el notebook?

El flujo arranca con el bloque uno: importar pandas, leer el archivo dataset.csv de partidos_cebollitas y usar .head() para inspeccionar las primeras filas [2:23].

En el bloque dos creas la columna de diferencia de goles restando goles visitantes a goles locales. Al revisar con .head() ya empiezas a ver el rendimiento del equipo en números concretos [2:39].

En el bloque tres construyes la columna ratio_shots_home_possession, dividiendo tiros locales a puerta entre posesión local. Un valor alto te indica que estás aprovechando bien la posesión para generar peligro [3:17].

¿Cómo visualizar y validar las nuevas variables?

Crear features no es suficiente. Tienes que verlas, distribuirlas y medir cómo se relacionan con el resto del dataset.

¿Por qué usar un histograma para la diferencia de goles?

En el bloque cuatro importas seaborn y matplotlib, y aplicas histplot sobre la diferencia de goles. Le agregas título con plt.title, etiquetas en los ejes X e Y, y obtienes una distribución clara de cuántas veces ganas, empatas o pierdes [3:53].

Esta visualización te responde una pregunta directa: ¿estamos empatando más, ganando más o perdiendo más?

¿Cómo interpretar la matriz de correlación?

En el bloque cinco defines una lista con las columnas a correlacionar: goles locales, goles visitantes, diferencia de goles y el ratio tiros/posesión. Calculas la matriz de correlación, cuyos valores van entre -1 y 1, y la representas con un heatmap de seaborn [4:33].

¿Qué significa una correlación de 0.67? Es una relación lineal positiva moderadamente fuerte. En este caso, indica que cuando suben los goles locales, también sube la diferencia de goles, lo cual confirma que la nueva variable captura bien el rendimiento.

Ese 0.67 entre goles locales y diferencia de goles ya te está diciendo algo: la variable nueva sí está alineada con el desempeño real del equipo.

¿Qué ganan los modelos predictivos con estas features?

Los algoritmos de machine learning no intuyen relaciones ocultas, pero tú sí. La diferencia de goles captura directamente el resultado del partido, y el ratio de tiros a posesión refuerza la idea de eficiencia ofensiva.

Son señales que el modelo no ve por su cuenta, pero que ahora guían mejor sus predicciones. Cuando construyas el modelo en la siguiente clase, estas variables van a ser parte del input.

Revisa tu notebook, corre los bloques y cuéntame en los comentarios qué patrones encontraste en la distribución de la diferencia de goles.