File size: 2,532 Bytes
dbbd0f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import joblib
import streamlit as st
import pandas as pd

# Load the pipeline
pipeline = joblib.load('src/mobile_price_classification.pkl')

# Streamlit app
st.title(":iphone: Mobile Price Classification")
st.write("Predict the price range of a mobile phone based on its features.")
st.image("https://img.freepik.com/premium-vector/cartoon-hand-holding-mobile-smart-phone-with-celebratory-confetti-flying-around-winner-concept_3482-5775.jpg", width='stretch')

# Class legend
CLASS_LABELS = {
    0: "0 (low cost)",
    1: "1 (medium cost)",
    2: "2 (high cost)",
    3: "3 (very high cost)",
}

# Create input form
col1, col2 = st.columns(2)

with col1:
    battery_power = st.number_input(
        "Battery Power (mAh)", min_value=500, max_value=5000, value=1500, step=50
    )
    int_memory = st.number_input(
        "Internal Memory (GB)", min_value=2, max_value=512, value=32, step=2
    )
    mobile_wt = st.number_input(
        "Mobile Weight (g)", min_value=80, max_value=300, value=150, step=1
    )
    px_height = st.number_input(
        "Pixel Height", min_value=0, max_value=2000, value=800, step=10
    )

with col2:
    px_width = st.number_input(
        "Pixel Width", min_value=0, max_value=2500, value=1280, step=10
    )
    ram = st.number_input(
        "RAM (MB)", min_value=256, max_value=8192, value=4096, step=128
    )
    talk_time = st.number_input(
        "Talk Time (hours)", min_value=2, max_value=24, value=15, step=1
    )
    touch_screen = st.selectbox(
        "Touch Screen", options=[0, 1], index=1, help="1 = Yes, 0 = No"
    )

# Create a button to predict the price range
if st.button("Predict Price Range", type="primary", use_container_width=True):
    # Create a DataFrame with the input features
    input_data = pd.DataFrame({
        'battery_power': [battery_power],
        'int_memory': [int_memory],
        'mobile_wt': [mobile_wt],
        'px_height': [px_height],
        'px_width': [px_width],
        'ram': [ram],
        'talk_time': [talk_time],
        'touch_screen': [touch_screen]
    })

    # Predict the price range
    prediction = pipeline.predict(input_data)
    predicted_label = int(prediction[0])
    predicted_text = CLASS_LABELS.get(predicted_label, str(predicted_label))

    st.subheader("Prediction")
    st.success(f":moneybag: **{predicted_text}**")

    with st.expander("Class legend", expanded=True):
        st.markdown("""
        - 0 (low cost)
        - 1 (medium cost)
        - 2 (high cost)
        - 3 (very high cost)
        """)