|
|
import streamlit as st |
|
|
import numpy as np |
|
|
import pandas as pd |
|
|
import pickle |
|
|
|
|
|
|
|
|
with open('src/laptop.pkl', 'rb') as file: |
|
|
model, feature_names = pickle.load(file) |
|
|
|
|
|
st.title("Dizüstü Bilgisayar Fiyat Tahmini") |
|
|
|
|
|
|
|
|
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"]) |
|
|
|
|
|
|
|
|
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.") |
|
|
|