PrediksiHargaPenutupan / prediction.py
hilalrd's picture
Upload 5 files
b7ba101
import streamlit as st
import pandas as pd
import numpy as np
import pickle
import json
from datetime import datetime
# Load model dan scaler
with open('model_lin_reg.pkl', 'rb') as file:
loaded_model = pickle.load(file)
with open('model_scaler.pkl', 'rb') as file:
model_scaler = pickle.load(file)
# Daftar kolom numerik
list_num_cols = ['open', 'low', 'high', 'volume']
# Daftar kolom kategorik
list_cat_cols = []
# Daftar kolom numerik dan kategorik
list_cat_num_cols = ['Tahun', 'Bulan', 'Hari']
def run():
with st.form(key='from_harga_saham_BBCA'):
timestamp = st.date_input("Masukkan tanggal", datetime(2023, 5, 1))
open_price = st.number_input('open', min_value=0, max_value=100000)
low = st.number_input('low', min_value=0, max_value=100000)
high = st.number_input('high', min_value=0, max_value=100000)
volume = st.number_input('volume', min_value=0, max_value=800000000)
st.markdown('---')
Tahun = st.number_input('Tahun', min_value=2020, max_value=2023)
Bulan = st.number_input('Bulan', min_value=1, max_value=12)
Hari = st.number_input('Hari', min_value=1, max_value=31)
submitted = st.form_submit_button('Prediksi Harga Penutupan')
data_inf = {
'timestamp': [timestamp],
'open': [open_price],
'low': [low],
'high': [high],
'volume': [volume],
'Tahun': [Tahun],
'Bulan': [Bulan],
'Hari': [Hari],
}
data_inf = pd.DataFrame(data_inf)
st.dataframe(data_inf)
if submitted:
if open_price == 0:
st.warning('open harus diisi')
else:
# Feature Scaling
data_inf_scaled = model_scaler.transform(data_inf[list_num_cols])
# Combine numerical and categorical data
data_inf_final = np.concatenate([data_inf_scaled, data_inf[list_cat_num_cols]], axis=1)
# Predict using Linear Regression
y_pred_inf = loaded_model.predict(data_inf_final)
# Harga Saham
harga_saham = int(y_pred_inf[0])
# Hasil Prediksi Harga
st.write('Harga Saham: Rp', harga_saham)
if __name__== '__main__':
run()