Source code for health4earth.analytics

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression

[docs] class HealthAnalyzer: """ Moteur d'analyse statistique et prédictive Health4Earth. Gère les régressions linéaires pour les projections 2025-2050. """ def __init__(self, df: pd.DataFrame): self.data = df.sort_values('year')
[docs] def get_country_data(self, country: str) -> pd.DataFrame: """Extrait les données spécifiques à un pays.""" return self.data[self.data['country'] == country].copy()
[docs] def predict_evolution(self, country: str, target_col: str, year_start_pred=2024, year_end=2050): """ Prédit l'évolution future d'un indicateur. Utilise les données depuis 2000 pour entraîner le modèle. """ df_country = self.get_country_data(country) # On entraîne sur les 20 dernières années pour avoir une tendance récente df_train = df_country[df_country['year'] >= 2000].dropna(subset=[target_col]) if len(df_train) < 5: return None # Machine Learning X = df_train[['year']].values y = df_train[target_col].values model = LinearRegression() model.fit(X, y) # Génération des années futures (de maintenant à 2050) future_years = np.arange(year_start_pred, year_end + 1).reshape(-1, 1) future_preds = model.predict(future_years) # DataFrame Prédiction df_future = pd.DataFrame({ 'year': future_years.flatten(), target_col: future_preds, 'type': 'Prédiction', 'country': country }) # DataFrame Historique (pour l'affichage complet) df_history = df_country[['year', target_col]].copy() df_history['type'] = 'Historique' df_history['country'] = country return pd.concat([df_history, df_future])