RRPATEL228 commited on
Commit
f55b212
·
verified ·
1 Parent(s): bf50e97

Upload 2 files

Browse files
Files changed (2) hide show
  1. bmw.py +58 -0
  2. photo.py +35 -0
bmw.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ from photo import *
4
+ from sklearn.preprocessing import LabelEncoder, StandardScaler
5
+ from sklearn.linear_model import LogisticRegression
6
+
7
+ # Load and preprocess dataset
8
+ @st.cache_data
9
+ def load_data():
10
+ df = pd.read_csv("BMW_Car_Sales_Classification.csv")
11
+ label_encoders = {}
12
+ df_encoded = df.copy()
13
+ for col in df.select_dtypes(include='object'):
14
+ le = LabelEncoder()
15
+ df_encoded[col] = le.fit_transform(df[col])
16
+ label_encoders[col] = le
17
+ scaler = StandardScaler()
18
+ X = df_encoded.drop("Sales_Classification", axis=1)
19
+ y = df_encoded["Sales_Classification"]
20
+ X_scaled = scaler.fit_transform(X)
21
+ model = LogisticRegression(max_iter=1000)
22
+ model.fit(X_scaled, y)
23
+ return model, scaler, label_encoders, df
24
+
25
+ model, scaler, label_encoders, df = load_data()
26
+
27
+ # Optional: Custom HTML header
28
+ st.markdown("""
29
+ <div style="background-color:#2c3e50;padding:20px;border-radius:10px;">
30
+ <h2 style="color:white;text-align:center;">🚗 BMW Sales Classification Predictor</h2>
31
+ </div>
32
+ <br>
33
+ """, unsafe_allow_html=True)
34
+
35
+ # Sidebar inputs
36
+ st.sidebar.header("Input Car Details")
37
+ form_data = {
38
+ "Model": st.sidebar.selectbox("Model", df["Model"].unique()),
39
+ "Year": st.sidebar.number_input("Year", min_value=2000, max_value=2025, value=2020),
40
+ "Region": st.sidebar.selectbox("Region", df["Region"].unique()),
41
+ "Color": st.sidebar.selectbox("Color", df["Color"].unique()),
42
+ "Fuel_Type": st.sidebar.selectbox("Fuel Type", df["Fuel_Type"].unique()),
43
+ "Transmission": st.sidebar.selectbox("Transmission", df["Transmission"].unique()),
44
+ "Engine_Size_L": st.sidebar.number_input("Engine Size (L)", min_value=1.0, max_value=6.0, step=0.1, value=2.0),
45
+ "Mileage_KM": st.sidebar.number_input("Mileage (KM)", value=30000),
46
+ "Price_USD": st.sidebar.number_input("Price (USD)", value=40000),
47
+ "Sales_Volume": st.sidebar.number_input("Sales Volume", value=100)
48
+ }
49
+
50
+ if st.sidebar.button("Predict Classification"):
51
+ input_df = pd.DataFrame([form_data])
52
+ for col in input_df.select_dtypes(include='object').columns:
53
+ input_df[col] = label_encoders[col].transform(input_df[col])
54
+ input_scaled = scaler.transform(input_df)
55
+ prediction = model.predict(input_scaled)
56
+ predicted_label = label_encoders['Sales_Classification'].inverse_transform(prediction)
57
+
58
+ st.success(f"🧠 Predicted Sales Classification: **{predicted_label[0]}**")
photo.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import base64
3
+
4
+ # ---- Helper Function ----
5
+ def set_background(image_file):
6
+ with open(image_file, "rb") as img:
7
+ encoded = base64.b64encode(img.read()).decode()
8
+
9
+ css = f"""
10
+ <style>
11
+ .stApp {{
12
+ background-image: url("data:image/jpg;base64,{encoded}");
13
+ background-size: cover;
14
+ background-position: center;
15
+ background-repeat: no-repeat;
16
+ }}
17
+ </style>
18
+ """
19
+ st.markdown(css, unsafe_allow_html=True)
20
+
21
+ # ---- Set background before any UI rendering ----
22
+ set_background("997526.jpg") # your image file
23
+
24
+ # ---- Streamlit UI ----
25
+
26
+ # Example Input
27
+ sales_value = st.number_input("Enter Sales Value ($)", min_value=0)
28
+
29
+ # Predict button
30
+ if st.button("Predict Sales Class"):
31
+ # Dummy logic for demonstration
32
+ if sales_value > 50000:
33
+ st.success("High-end BMW buyer")
34
+ else:
35
+ st.warning("Mid-range BMW buyer")