import numpy as np import pandas as pd import yfinance as yf from keras.models import load_model from sklearn.preprocessing import MinMaxScaler # Load model model = load_model("stock_dl_model.h5") def predict(stock_symbol="POWERGRID.NS"): start = pd.to_datetime("2000-01-01") end = pd.to_datetime("2024-10-01") df = yf.download(stock_symbol, start=start, end=end) data_training = pd.DataFrame(df['Close'][0:int(len(df)*0.70)]) data_testing = pd.DataFrame(df['Close'][int(len(df)*0.70): int(len(df))]) scaler = MinMaxScaler(feature_range=(0, 1)) data_training_array = scaler.fit_transform(data_training) past_100_days = data_training.tail(100) final_df = past_100_days.append(data_testing, ignore_index=True) input_data = scaler.fit_transform(final_df) x_test, y_test = [], [] for i in range(100, input_data.shape[0]): x_test.append(input_data[i-100:i]) y_test.append(input_data[i, 0]) x_test, y_test = np.array(x_test), np.array(y_test) y_predicted = model.predict(x_test) scaler = scaler.scale_ scale_factor = 1 / scaler[0] y_predicted = y_predicted * scale_factor y_test = y_test * scale_factor return { "prediction": y_predicted.tolist() } def __call__(self, inputs): stock_symbol = inputs.get("inputs", "POWERGRID.NS") return predict(stock_symbol)