stock-prediction-model / inference.py
SelvaprakashV's picture
Upload inference.py with huggingface_hub
859e4b6 verified
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)