import pandas as pd from core.train_eval import train_and_evaluate from core.models import LSTMModel, GRUModel, CNNModel, TransformerModel, MLPModel, BiLSTMModel, HybridModel, RNNModel, CNN_GRU def get_model(df, future_df, model_name, horizon, hidden_units, n_layers, epochs, learning_rate, beta1, beta2, weight_decay, dropout, window_size, test_split, scheduler_factor): model_map = { "LSTM": LSTMModel, "GRU": GRUModel, "CNN": CNNModel, "Transformer": TransformerModel, "MLP": MLPModel, "BiLSTM": BiLSTMModel, "Hybrid": HybridModel, "RNN": RNNModel, "CNN-GRU": CNN_GRU } if model_name not in model_map: raise ValueError(f"Model {model_name} not supported.") model_cls = model_map[model_name] result = train_and_evaluate( df=df, future_df=future_df, model_cls=model_cls, horizon=horizon, hidden=hidden_units, layers=n_layers, epochs=epochs, lr=learning_rate, beta1=beta1, beta2=beta2, weight_decay=weight_decay, dropout=dropout, window=window_size, test_split=test_split, scheduler_factor=scheduler_factor ) return result