Laptop_Price_Predicton / src /streamlit_app.py
HarunDemircioglu11's picture
Update src/streamlit_app.py
e64d8e0 verified
import streamlit as st
import numpy as np
import pandas as pd
import pickle
# Model ve feature isimlerini belirli bir klasörden yükle
with open('src/laptop.pkl', 'rb') as file:
model, feature_names = pickle.load(file)
st.title("Dizüstü Bilgisayar Fiyat Tahmini")
# Temel numerik feature inputları
inches = st.number_input("Ekran Boyutu (Inch)", 10.0, 18.0, 15.6)
ram = st.number_input("RAM (GB)", 2, 128, 8)
weight = st.number_input("Ağırlık (kg)", 0.5, 5.0, 2.0)
ghz = st.number_input("İşlemci Hızı (GHz)", 1.0, 5.5, 2.5)
ssd = st.number_input("SSD Kapasitesi (GB)", 0, 4000, 256)
hdd = st.number_input("HDD Kapasitesi (GB)", 0, 4000, 0)
flash = st.number_input("Flash Storage (GB)", 0, 2000, 0)
hybrid = st.number_input("Hybrid Disk (GB)", 0, 4000, 0)
ppi = st.number_input("PPI", 60, 500, 150)
ips = st.selectbox("IPS Panel Var mı?", ["Yok", "Var"])
touch = st.selectbox("Dokunmatik Ekran Var mı?", ["Yok", "Var"])
# Dummy ve categoric feature inputları
company = st.selectbox("Marka", ['Apple','Asus','Acer','Dell','HP','Lenovo','MSI','Toshiba','Samsung','Microsoft','Razer','Mediacom','Vero','Xiaomi','Chuwi','Google','Fujitsu','LG','Huawei'])
opsys = st.selectbox("İşletim Sistemi", ['Windows 10','Windows 7','Windows 10 Home','Windows 10 Pro','macOS','Linux','No OS','Chrome OS'])
input_dict = dict.fromkeys(feature_names, 0)
input_dict['Inches'] = inches
input_dict['Ram'] = ram
input_dict['Weight'] = weight
input_dict['GHz'] = ghz
input_dict['SSD'] = ssd
input_dict['HDD'] = hdd
input_dict['Flash_Storage'] = flash
input_dict['Hybrid'] = hybrid
input_dict['PPI'] = ppi
input_dict['IPS'] = 1 if ips == "Var" else 0
input_dict['Touchscreen'] = 1 if touch == "Var" else 0
company_col = f'Company_{company}'
if company_col in input_dict:
input_dict[company_col] = 1
opsys_col = f'OpSys_{opsys}'
if opsys_col in input_dict:
input_dict[opsys_col] = 1
input_df = pd.DataFrame([input_dict], columns=feature_names)
if st.button("Tahmini Fiyatı Göster"):
price_pred = model.predict(input_df)[0]
st.success(f"Tahmini Fiyat: {int(price_pred):,} ₺")
st.caption("Not: Tahmin edilen fiyat modelin eğitildiği kur ve piyasa koşullarına bağlıdır. Gerçek fiyatlar değişiklik gösterebilir.")