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()