Spaces:
Sleeping
Sleeping
| import numpy as np | |
| import pandas as pd | |
| from sklearn.preprocessing import StandardScaler | |
| from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score | |
| import yfinance as yf | |
| import os | |
| def download_yahoo_data(ticker, start_date, end_date): | |
| df = yf.download(ticker, start=start_date, end=end_date) | |
| df = df[['Close']].dropna() | |
| df.reset_index(inplace=True) | |
| return df | |
| def load_offline_csv(file): | |
| df = pd.read_csv(file) | |
| if 'Date' in df.columns: | |
| df['Date'] = pd.to_datetime(df['Date']) | |
| df.set_index('Date', inplace=True) | |
| return df | |
| def prepare_sequences(data, window_size): | |
| X, y = [], [] | |
| for i in range(len(data) - window_size): | |
| X.append(data[i:i + window_size]) | |
| y.append(data[i + window_size]) | |
| return np.array(X), np.array(y) | |
| def scale_data(df, column='Close'): | |
| scaler = StandardScaler() | |
| scaled = scaler.fit_transform(df[[column]]) | |
| return scaled, scaler | |
| def inverse_transform(scaler, data): | |
| return scaler.inverse_transform(data) | |
| def compute_metrics(y_true, y_pred): | |
| return { | |
| "MSE": mean_squared_error(y_true, y_pred), | |
| "MAE": mean_absolute_error(y_true, y_pred), | |
| "R²": r2_score(y_true, y_pred) | |
| } | |
| def rolling_backtest(model, X, y, step=5): | |
| predictions = [] | |
| for i in range(0, len(X) - step, step): | |
| X_batch = X[i:i + step] | |
| pred = model.predict(X_batch) | |
| predictions.extend(pred.flatten()) | |
| return predictions | |
| # core/utils.py | |
| import matplotlib.pyplot as plt | |
| def plot_loss_curve(train_losses, val_losses=None): | |
| plt.figure(figsize=(10, 5)) | |
| plt.plot(train_losses, label='Train Loss', color='blue') | |
| if val_losses is not None: | |
| plt.plot(val_losses, label='Validation Loss', color='orange') | |
| plt.title('Training Loss Curve') | |
| plt.xlabel('Epoch') | |
| plt.ylabel('Loss') | |
| plt.legend() | |
| plt.grid(True) | |
| plt.tight_layout() | |
| plt.savefig("loss_curve.png") # Saves the plot | |
| plt.close() |