|
|
|
import numpy as np |
|
import pandas as pd |
|
import yfinance as yf |
|
from keras.models import load_model |
|
from sklearn.preprocessing import MinMaxScaler |
|
|
|
|
|
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) |
|
|