Spaces:
Runtime error
Runtime error
from sklearn.preprocessing import MinMaxScaler | |
import numpy as np | |
import pandas as pd | |
from datetime import datetime, timedelta | |
import tensorflow as tf | |
from tensorflow.keras.models import load_model as tf_load_model | |
# Define the scaler globally | |
scaler = MinMaxScaler(feature_range=(0, 1)) | |
def feature_engineering(stock_data): | |
# Define the end date for fetching data (yesterday's date) | |
end_date = datetime.now() - timedelta(days=1) | |
# Fetch data until yesterday's date | |
dataset = stock_data["Close"].loc[:end_date] | |
dataset = pd.DataFrame(dataset) | |
data = dataset.values | |
# 75% to Train, 25% to Test | |
train_size = int(len(data) * 0.85) | |
test_size = len(data) - train_size | |
train_data = data[:train_size] | |
test_data = data[train_size-5:] | |
scaled_train = scaler.fit_transform(np.array(train_data).reshape(-1, 1)) | |
scaled_test = scaler.transform(np.array(test_data).reshape(-1, 1)) | |
# Create dataset with 60 time steps and (59 input and only 1 output in each) as this is a regression problem | |
X_train = [] | |
y_train = [] | |
for i in range(60, len(scaled_train)): | |
X_train.append(scaled_train[i-5:i, 0]) | |
y_train.append(scaled_train[i, 0]) | |
# Convert Xs, y to arrays | |
X_train, y_train = np.array(X_train), np.array(y_train) | |
# Reshape data | |
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1)) | |
# Creating a testing set with 60 time-steps and 1 output | |
X_test = [] | |
y_test = [] | |
for i in range(5, len(scaled_test)): | |
X_test.append(scaled_test[i-5:i, 0]) | |
y_test.append(scaled_test[i, 0]) | |
X_test, y_test = np.array(X_test), np.array(y_test) | |
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) | |
return X_test | |
# Function to load a specific model | |
def load_custom_model(selected_model): | |
if selected_model == 'BCA': | |
model = tf_load_model('model_bca.keras') | |
elif selected_model == 'BNI': | |
model = tf_load_model('model_bni.keras') | |
elif selected_model == 'BRI': | |
model = tf_load_model('model_bri.keras') | |
elif selected_model == 'Mandiri': | |
model = tf_load_model('model_mri.keras') | |
else: | |
model = None | |
return model | |
def run_inference(model, X_test): | |
# Perform inference using the loaded model | |
predicted_prices = model.predict(X_test) | |
# Inverse scaling to get the actual prices | |
predicted_prices = scaler.inverse_transform(predicted_prices) | |
return predicted_prices | |