ArthurGamaJorge commited on
Commit
37886e5
·
1 Parent(s): 3305cc7

Corrigir api

Browse files
Files changed (1) hide show
  1. 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
- last_real_sequence = df_mun[dynamic_features].iloc[-self.sequence_length:].copy()
92
- dynamic_sequence_scaled = scaler_dyn.transform(last_real_sequence)
 
 
 
 
 
 
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() # só clima, sem numero_casos
 
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'), "cases": row["numero_casos"]}
 
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
- col: [df_analysis[cases_col_name].corr(df_analysis[col].shift(lag)) for lag in range(1, max_lag + 1)]
142
- for col in lag_features
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()