File size: 4,045 Bytes
51a55f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
74
75
76
77
78
79
80
81
82
83
84
85
import streamlit as st
from joblib import load

# Load model
Model = load('svm.joblib')

def predict_note_authentication(values):
    prediction = Model.predict([values])
    return prediction[0]

def main():
    st.set_page_config(page_title='Mobile Price Classification', layout='wide')
    
    # Custom CSS
    st.markdown("""
        <style>
        .main {background-color: #f4f4f4;}
        .title {color: white; text-align: center; font-size: 26px; font-weight: bold;}
        .result {background-color: #4CAF50; padding: 10px; color: white; text-align: center; font-size: 22px; font-weight: bold; border-radius: 10px;}
        .predict-button {display: flex; justify-content: center; margin-top: 20px;}
        .stButton>button {background-color: #ff5733; color: white; font-size: 18px; font-weight: bold; padding: 10px 20px; border-radius: 10px;}
        .stButton>button:hover {background-color: #e64a19;}
        </style>
    """, unsafe_allow_html=True)
    
    # Title Section
    st.markdown("""
        <div style="background-color:#ff5733;padding:15px;border-radius:10px;">
        <h2 class="title">Predict the Price Range of a Mobile</h2>
        </div>
    """, unsafe_allow_html=True)
    
    # Input Fields in 3 Columns
    col1, col2, col3 = st.columns(3)
    
    with col1:
        battery_power = st.number_input('Battery Power (mAh)', min_value=500, max_value=2000, step=10)
        colour = st.selectbox('Colour', ['Blue', 'Other'])
        clock_speed = st.number_input('Clock Speed (GHz)', min_value=0.5, max_value=3.0, step=0.1)
        sim = st.selectbox('SIM Option', ['Dual', 'Single'])
        front_camera = st.number_input('Front Camera (MP)', min_value=0, max_value=20, step=1)
        network_4G = st.selectbox('Network (4G)', ['Yes', 'No'])
        network_3G = st.selectbox('Network (3G)', ['Yes', 'No'])
    
    with col2:
        int_memory = st.number_input('Internal Memory (GB)', min_value=2, max_value=64, step=1)
        mobile_depth = st.selectbox('Mobile Depth (cm)', [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
        mobile_wt = st.number_input('Mobile Weight (grams)', min_value=80, max_value=200, step=1)
        n_cores = st.selectbox('Number of Cores', [1, 2, 3, 4, 5, 6, 7, 8])
        primary_camera = st.number_input('Primary Camera (MP)', min_value=0, max_value=20, step=1)
        px_height = st.number_input('Screen Pixel Height', min_value=0, max_value=2000, step=10)
        px_width = st.number_input('Screen Pixel Width', min_value=100, max_value=2000, step=10)
    
    with col3:
        ram = st.number_input('RAM (MB)', min_value=256, max_value=4000, step=10)
        screen_height = st.number_input('Screen Height (cm)', min_value=0, max_value=20, step=1)
        screen_width = st.number_input('Screen Width (cm)', min_value=0, max_value=20, step=1)
        talk_time = st.number_input('Talk Time (hours)', min_value=1, max_value=20, step=1)
        touch_screen = st.selectbox('Touch Screen', ['Yes', 'No'])
        wifi = st.selectbox('Wi-Fi Support', ['Yes', 'No'])
    
    # Processing Inputs
    colour = 1 if colour == 'Blue' else 0
    sim = 1 if sim == 'Dual' else 0
    four_g = 1 if network_4G == 'Yes' else 0
    three_g = 1 if network_3G == 'Yes' else 0
    touch_screen = 1 if touch_screen == 'Yes' else 0
    wifi = 1 if wifi == 'Yes' else 0
    
    values = [
        battery_power, colour, clock_speed, sim, front_camera, four_g, int_memory, mobile_depth, mobile_wt,
        n_cores, primary_camera, px_height, px_width, ram, screen_height, screen_width, talk_time, three_g,
        touch_screen, wifi
    ]
    
    # Predict and Display Result
    st.markdown("<div class='predict-button'>", unsafe_allow_html=True)
    if st.button("Predict", help="Click to predict the mobile price range"):
        result = predict_note_authentication(values)
        st.markdown(f'<div class="result">Predicted Price Class: {result}</div>', unsafe_allow_html=True)
    st.markdown("</div>", unsafe_allow_html=True)

if __name__ == "__main__":
    main()