AbdullahImran commited on
Commit
091a7e7
·
1 Parent(s): 8a5c0d6

resolved model 3 scale issues

Browse files
Files changed (1) hide show
  1. streamlit_app.py +21 -10
streamlit_app.py CHANGED
@@ -172,11 +172,12 @@ def load_all():
172
  country_features = None
173
 
174
  return {
175
- "model1": model1, "model2": model2, "model3": model3,
176
- "scaler1": scaler1, "scalerX2": scalerX2, "scalerY2": scalerY2, "scaler3": scaler3,
177
- "feature_cols2": feature_cols2, "df_agri": df_agri, "df_co2": df_co2,
178
- "country_features": country_features,
179
- }
 
180
 
181
 
182
  def forecast_model1(model, scaler, recent_values):
@@ -198,15 +199,25 @@ def predict_model2(model, scalerX, scalerY, feature_array):
198
 
199
  def forecast_model3(model, scaler, recent_series, country_vec):
200
  window = len(recent_series)
201
- co2_scaled = scaler.transform(np.array(recent_series).reshape(-1, 1)).flatten()
202
- co2_col = co2_scaled.reshape(window, 1)
203
  country_mat = np.tile(country_vec.reshape(1, -1), (window, 1))
 
 
204
  seq = np.concatenate([co2_col, country_mat], axis=1)
 
 
205
  inp = seq.reshape(1, window, seq.shape[1])
206
- ypred_scaled = model.predict(inp, verbose=0).flatten()
207
- ypred = scaler.inverse_transform(ypred_scaled.reshape(-1, 1)).flatten()
208
- return ypred
209
 
 
 
 
 
 
 
 
 
 
210
 
211
  def create_animated_metric(label, value, icon="🎯"):
212
  st.markdown(f"""
 
172
  country_features = None
173
 
174
  return {
175
+ "model1": model1, "model2": model2, "model3": model3,
176
+ "scaler1": scaler1, "scalerX2": scalerX2, "scalerY2": scalerY2, "scaler3": scaler3, # <--- Ensure scaler3 is returned
177
+ "feature_cols2": feature_cols2, "df_agri": df_agri, "df_co2": df_co2,
178
+ "country_features": country_features,
179
+ }
180
+
181
 
182
 
183
  def forecast_model1(model, scaler, recent_values):
 
199
 
200
  def forecast_model3(model, scaler, recent_series, country_vec):
201
  window = len(recent_series)
202
+ # co2_scaled = scaler.transform(np.array(recent_series).reshape(-1, 1)).flatten()
203
+ co2_col = np.array(recent_series).reshape(window, 1)
204
  country_mat = np.tile(country_vec.reshape(1, -1), (window, 1))
205
+
206
+ # Concatenate raw CO2 values with country vector
207
  seq = np.concatenate([co2_col, country_mat], axis=1)
208
+
209
+ # Reshape input for LSTM
210
  inp = seq.reshape(1, window, seq.shape[1])
 
 
 
211
 
212
+ # Make prediction - model outputs raw, unscaled values
213
+ ypred_raw_output = model.predict(inp, verbose=0).flatten()
214
+
215
+ # --- PREVIOUSLY INCORRECT INVERSE TRANSFORM REMOVED ---
216
+ # ypred = scaler.inverse_transform(ypred_scaled.reshape(-1, 1)).flatten()
217
+ # The model's output is already the final, unscaled prediction
218
+ ypred = ypred_raw_output
219
+
220
+ return ypred
221
 
222
  def create_animated_metric(label, value, icon="🎯"):
223
  st.markdown(f"""