Spaces:
Running
Running
Commit ·
37886e5
1
Parent(s): 3305cc7
Corrigir api
Browse files- predict.py +24 -8
predict.py
CHANGED
|
@@ -88,8 +88,14 @@ class DenguePredictor:
|
|
| 88 |
municipio_name = self.municipios[self.municipios['codigo_ibge'] == ibge_code].iloc[0]['municipio']
|
| 89 |
|
| 90 |
dynamic_features = list(self.feature_names_pt.keys())
|
| 91 |
-
|
| 92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
static_data = df_mun[["latitude", "longitude"]].iloc[0].values.reshape(1, -1)
|
| 94 |
static_input = scaler_static.transform(static_data)
|
| 95 |
|
|
@@ -115,7 +121,8 @@ class DenguePredictor:
|
|
| 115 |
if (future_year, future_week) in climate_lookup:
|
| 116 |
future_climate = climate_lookup[(future_year, future_week)]
|
| 117 |
else:
|
| 118 |
-
future_climate = df_mun[dynamic_features[1:]].tail(4).mean(
|
|
|
|
| 119 |
|
| 120 |
new_row = np.zeros(len(dynamic_features), dtype=np.float32)
|
| 121 |
new_row[0] = pred_scaled # numero_casos previsto
|
|
@@ -128,19 +135,28 @@ class DenguePredictor:
|
|
| 128 |
|
| 129 |
# Histórico das últimas 52 semanas
|
| 130 |
historic_data = [
|
| 131 |
-
{"date": row['data_semana_iso'].strftime('%Y-%m-%d'),
|
|
|
|
| 132 |
for _, row in df_mun.tail(52).iterrows()
|
| 133 |
]
|
| 134 |
|
|
|
|
| 135 |
# Análise de lag
|
| 136 |
df_analysis = df_mun[dynamic_features].rename(columns=self.feature_names_pt)
|
| 137 |
max_lag = 12
|
| 138 |
cases_col_name = 'Nº de Casos de Dengue'
|
| 139 |
lag_features = ['Temperatura Média (°C)', 'Precipitação (mm)']
|
| 140 |
-
lag_correlations = {
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
|
| 145 |
plt.figure(figsize=(10, 6), facecolor='#18181b')
|
| 146 |
ax = plt.gca()
|
|
|
|
| 88 |
municipio_name = self.municipios[self.municipios['codigo_ibge'] == ibge_code].iloc[0]['municipio']
|
| 89 |
|
| 90 |
dynamic_features = list(self.feature_names_pt.keys())
|
| 91 |
+
# Pegar últimas 'sequence_length' semanas para iniciar a previsão
|
| 92 |
+
last_sequence = df_mun[dynamic_features].iloc[-self.sequence_length:].copy()
|
| 93 |
+
|
| 94 |
+
# Substituir NaNs da sequência inicial por zeros apenas para o scaler (não para salvar)
|
| 95 |
+
# Isso é só para evitar erro do scaler; depois o modelo vai gerar previsão real
|
| 96 |
+
last_sequence_filled = last_sequence.fillna(0)
|
| 97 |
+
dynamic_sequence_scaled = scaler_dyn.transform(last_sequence_filled)
|
| 98 |
+
|
| 99 |
static_data = df_mun[["latitude", "longitude"]].iloc[0].values.reshape(1, -1)
|
| 100 |
static_input = scaler_static.transform(static_data)
|
| 101 |
|
|
|
|
| 121 |
if (future_year, future_week) in climate_lookup:
|
| 122 |
future_climate = climate_lookup[(future_year, future_week)]
|
| 123 |
else:
|
| 124 |
+
future_climate = df_mun[dynamic_features[1:]].tail(4).mean(axis=0, skipna=True)
|
| 125 |
+
|
| 126 |
|
| 127 |
new_row = np.zeros(len(dynamic_features), dtype=np.float32)
|
| 128 |
new_row[0] = pred_scaled # numero_casos previsto
|
|
|
|
| 135 |
|
| 136 |
# Histórico das últimas 52 semanas
|
| 137 |
historic_data = [
|
| 138 |
+
{"date": row['data_semana_iso'].strftime('%Y-%m-%d'),
|
| 139 |
+
"cases": int(row["numero_casos"]) if not pd.isna(row["numero_casos"]) else 0}
|
| 140 |
for _, row in df_mun.tail(52).iterrows()
|
| 141 |
]
|
| 142 |
|
| 143 |
+
|
| 144 |
# Análise de lag
|
| 145 |
df_analysis = df_mun[dynamic_features].rename(columns=self.feature_names_pt)
|
| 146 |
max_lag = 12
|
| 147 |
cases_col_name = 'Nº de Casos de Dengue'
|
| 148 |
lag_features = ['Temperatura Média (°C)', 'Precipitação (mm)']
|
| 149 |
+
lag_correlations = {}
|
| 150 |
+
for col in lag_features:
|
| 151 |
+
corrs = []
|
| 152 |
+
for lag in range(1, max_lag + 1):
|
| 153 |
+
x = df_analysis[col].shift(lag)
|
| 154 |
+
y = df_analysis[cases_col_name]
|
| 155 |
+
valid_idx = x.notna() & y.notna()
|
| 156 |
+
corr = y[valid_idx].corr(x[valid_idx]) if valid_idx.any() else 0
|
| 157 |
+
corrs.append(corr)
|
| 158 |
+
lag_correlations[col] = corrs
|
| 159 |
+
|
| 160 |
|
| 161 |
plt.figure(figsize=(10, 6), facecolor='#18181b')
|
| 162 |
ax = plt.gca()
|