LaptopPricePredv4 / prediction.py
septyoa's picture
Upload 4 files
a488f40 verified
import streamlit as st
import pandas as pd
import pickle # or import pickle if that's what you used to save your model
# Load your trained model
with open('XGBmodel.pkl', 'rb') as file_1:
XGBmodel = pickle.load(file_1)
# Set the title of the app
def make_prediction():
st.title('Laptop Price Prediction')
st.write("MLModel Built by MSABP")
st.header('',divider='gray')
# Create a form for inputting laptop specifications
with st.form(key='laptop_spec_form'):
# Input fields
company = st.text_input("Company")
product = st.text_input("Product")
laptop_type = st.selectbox("Type", ["Notebook", "Gaming", "Ultrabook", "2-in-1", "Others"])
inches = st.number_input("Inches", min_value=0, step=1)
ram = st.number_input("RAM (GB)", min_value=0, step=2)
os = st.text_input("Operating System")
weight = st.number_input("Weight (kg)", min_value=0.0, step=0.1)
screen = st.selectbox("Screen Resolution", ["Full HD", "4K", "HD", "Others"])
width = st.number_input("Screen Width (px)", min_value=0, step=120)
height = st.number_input("Screen Height (px)", min_value=0, step=120)
touchscreen = st.selectbox("Touchscreen", ["Yes", "No"])
ips = st.selectbox("IPS Display", ["Yes", "No"])
retina = st.selectbox("Retina Display", ["Yes", "No"])
cpu_company = st.text_input("CPU Company")
cpu_freq = st.number_input("CPU Frequency (GHz)", min_value=0.0, step=0.1)
cpu_model = st.text_input("CPU Model")
primary_storage = st.number_input("Primary Storage (GB)", min_value=0, step=64)
secondary_storage = st.number_input("Secondary Storage (GB)", min_value=0, step=64)
primary_storage_type = st.selectbox("Primary Storage Type", ["SSD", "HDD", "Others"])
secondary_storage_type = st.selectbox("Secondary Storage Type", ["No", "SSD", "HDD", "Others"])
gpu_company = st.text_input("GPU Company")
gpu_model = st.text_input("GPU Model")
# Submit button
submit_button = st.form_submit_button(label='Submit')
if submit_button:
# Create a dictionary from the input data
laptop_data = {
"Company": company,
"Product": product,
"Type": laptop_type,
"Inches": inches,
"Ram": ram,
"OS": os,
"Weight": weight,
"Screen": screen,
"Width": width,
"Height": height,
"Touchscreen": touchscreen,
"IPS": ips,
"Retina": retina,
"CPU_company": cpu_company,
"CPU_freq": cpu_freq,
"CPU_model": cpu_model,
"PrimaryStorage": primary_storage,
"SecondaryStorage": secondary_storage,
"PrimaryStorageType": primary_storage_type,
"SecondaryStorageType": secondary_storage_type,
"GPU_company": gpu_company,
"GPU_model": gpu_model
}
# Convert the input data to a DataFrame for prediction
input_df = pd.DataFrame([laptop_data])
st.subheader('User Input')
st.write("""This is a view of the data you have entered.
""")
st.write(input_df)
# Make the prediction
predicted_price = XGBmodel.predict(input_df)
# Display the prediction message
st.write(f'Based on specs you wanted, the price estimation is: {predicted_price[0]:,.2f}')
if __name__ == "__main__":
make_prediction()