Spaces:
Sleeping
Sleeping
File size: 1,639 Bytes
705306c 1c65d7d 705306c 525fd54 1c65d7d 705306c 1c65d7d 705306c 1c65d7d 705306c 1c65d7d 705306c 1c65d7d 705306c 1c65d7d 705306c 1c65d7d 705306c 1c65d7d 705306c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import pandas as pd
import joblib
import numpy as np
import os
import matplotlib.pyplot as plt
from sklearn.metrics import mean_absolute_error, mean_squared_error
df = pd.read_csv('weather.csv')
df['datetime'] = pd.to_datetime(df['datetime'])
df = df.sort_values('datetime').reset_index(drop=True)
# Recreate lag features exactly as train_model.py does
for lag in range(1, 8):
df[f'temp_lag{lag}'] = df['temp'].shift(lag)
df = df.dropna().reset_index(drop=True)
# Use the exact same feature set as training
FEATURES = ["humidity", "windspeed", "cloudcover"] + [f"temp_lag{i}" for i in range(1, 8)]
X = df[FEATURES]
y = df['temp']
scaler = joblib.load('models/scaler.pkl')
model = joblib.load('models/xgb_model.pkl')
X_scaled = scaler.transform(X)
pred = model.predict(X_scaled)
mae = mean_absolute_error(y, pred)
rmse = np.sqrt(mean_squared_error(y, pred))
print(f"MAE: {mae:.4f}, RMSE: {rmse:.4f}")
os.makedirs("results", exist_ok=True)
# Save actual vs predicted CSV for generate_graphs.py
out_df = df[['datetime', 'temp']].copy()
out_df['pred'] = pred
out_df.to_csv("results/actual_vs_pred.csv", index=False)
with open("results/metrics.txt", "w") as f:
f.write(f"MAE: {mae:.4f}\nRMSE: {rmse:.4f}\n")
plt.figure(figsize=(10, 5))
plt.plot(df['datetime'], y, label='Actual Temperature', linewidth=2)
plt.plot(df['datetime'], pred, label='Predicted Temperature', linewidth=2, linestyle='--')
plt.legend()
plt.title("Actual vs Predicted Temperature")
plt.xlabel("Date")
plt.ylabel("Temperature (°C)")
plt.tight_layout()
plt.savefig("results/performance_plot.png")
print("Saved plot to results/performance_plot.png")
|