Spaces:
Running
Running
import streamlit as st | |
import numpy as np | |
import pickle | |
# Function to load the model from pickle | |
def load_model(path): | |
with open(path, 'rb') as f: | |
model = pickle.load(f) | |
return model | |
# Define the main function for predicting stock price | |
def predict_stock_price(open_val, high_val, low_val, close_val, adj_close_val, volume, model): | |
try: | |
# Prepare the input data as a numpy array | |
X = np.array([[open_val, high_val, low_val, close_val, adj_close_val]]) | |
# Use the loaded model for prediction | |
predicted_price = model.predict(X) | |
return predicted_price[0] | |
except (ValueError, AttributeError) as e: | |
st.error(f'Error occurred: {str(e)}') | |
return None | |
# Define the Streamlit app | |
def main(): | |
st.title('Stock Prediction') | |
# Load your trained model from pickle | |
model_path = 'model.pkl' # Replace with your actual path | |
model = load_model(model_path) | |
# Input fields for user to enter stock data | |
open_val = st.number_input('Open (Range: 0 to 100000)', min_value=0.0, max_value=100000.0, value=0.0) | |
high_val = st.number_input('High (Range: 0 to 100000)', min_value=0.0, max_value=100000.0, value=0.0) | |
low_val = st.number_input('Low (Range: 0 to 100000)', min_value=0.0, max_value=100000.0, value=0.0) | |
close_val = st.number_input('Close* (Range: 0 to 100000)', min_value=0.0, max_value=100000.0, value=0.0) | |
adj_close_val = st.number_input('Adj Close** (Range: 0 to 100000)', min_value=0.0, max_value=100000.0, value=0.0) | |
volume = st.number_input('Volume (Range: 0 to 1,000,000,000)', min_value=0.0, max_value=1000000000.0, value=0.0) | |
# Predict button | |
if st.button('Predict'): | |
if any([open_val == 0.0, high_val == 0.0, low_val == 0.0, close_val == 0.0, adj_close_val == 0.0, volume == 0.0]): | |
st.error('Please enter valid numeric values for all fields.') | |
else: | |
# Call prediction function | |
predicted_price = predict_stock_price(open_val, high_val, low_val, close_val, adj_close_val, volume, model) | |
if predicted_price is not None: | |
st.success(f'The predicted stock price is: {predicted_price:.2f}') | |
else: | |
st.error('Failed to predict stock price.') | |
if __name__ == '__main__': | |
main() | |