File size: 2,292 Bytes
b7ba101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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()