🎰 Predicción de Euromillones con Machine Learning (Python + IA)
💡💻 En este proyecto he desarrollado un modelo de Machine Learning aplicado a los resultados históricos del Euromillones, con el objetivo de analizar patrones, distribuciones y posibles tendencias. A través de un notebook en Python, se implementan técnicas de análisis de datos, aprendizaje automático y visualización, todo ello dentro de un entorno reproducible y educativo.
📊 Carga y exploración de datos
El primer paso consiste en importar las librerías necesarias y cargar el dataset histórico de resultados del Euromillones.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Cargar datos
df = pd.read_csv('euromillones.csv')
print(df.head())
# Información general
df.info()
Una vez cargado, se realiza un análisis exploratorio para conocer la estructura de los datos y detectar posibles valores nulos o inconsistencias.
🧹 Limpieza y preparación de datos
En esta fase se normalizan las columnas, se eliminan duplicados y se transforman los datos en un formato adecuado para el modelo de Machine Learning.
# Limpieza básica
df = df.drop_duplicates()
df = df.fillna(0)
# Conversión de tipos
df['Fecha'] = pd.to_datetime(df['Fecha'])
# Selección de características
features = df[['N1', 'N2', 'N3', 'N4', 'N5', 'E1', 'E2']]
📈 Análisis de frecuencias
Para visualizar los números más repetidos, se genera una gráfica de frecuencias.
plt.figure(figsize=(10,5))
sns.countplot(x='N1', data=df, color='royalblue')
plt.title('Frecuencia de números principales')
plt.show()
🤖 Entrenamiento del modelo
Una vez preparado el dataset, se entrena un modelo de clasificación utilizando scikit-learn.
Aunque el objetivo no es predecir con certeza, permite aplicar técnicas de modelado y evaluación.
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# Dividir datos
X = features
y = df['N1'] # ejemplo: predecir el primer número
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Entrenar modelo
model = RandomForestClassifier(n_estimators=200, random_state=42)
model.fit(X_train, y_train)
# Evaluar
pred = model.predict(X_test)
print("Precisión:", accuracy_score(y_test, pred))
📊 Visualización de resultados
Por último, se muestran las predicciones y distribuciones para analizar el comportamiento del modelo.
sns.histplot(pred, bins=50, kde=True, color='green')
plt.title('Distribución de predicciones del modelo')
plt.show()
🎯 Conclusiones
Este notebook demuestra cómo aplicar técnicas de Data Science y Machine Learning en un caso práctico. Más allá del azar, el valor está en el proceso de limpieza, exploración y modelado, que son pilares fundamentales del análisis de datos moderno.