ScorpionTaj commited on
Commit
b71c7e3
·
verified ·
1 Parent(s): 8c1a9da

Upload 5 files

Browse files
Files changed (5) hide show
  1. Car_Price_Model.ipynb +0 -0
  2. CarsData.csv +0 -0
  3. app.py +91 -0
  4. model.pkl +3 -0
  5. requirements.txt +4 -0
Car_Price_Model.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CarsData.csv ADDED
The diff for this file is too large to render. See raw diff
 
app.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import pickle
5
+ from sklearn.compose import ColumnTransformer
6
+ from sklearn.preprocessing import OneHotEncoder, StandardScaler
7
+ from sklearn.pipeline import Pipeline
8
+ from sklearn.linear_model import LinearRegression
9
+
10
+ # Load pre-trained model
11
+ with open("model.pkl", "rb") as file:
12
+ pipeline = pickle.load(file)
13
+
14
+ # Define the feature columns
15
+ feature_columns = [
16
+ "year",
17
+ "mileage",
18
+ "tax",
19
+ "mpg",
20
+ "engineSize",
21
+ "transmission",
22
+ "fuelType",
23
+ "Manufacturer",
24
+ ]
25
+
26
+
27
+ def predict_price(
28
+ year, mileage, tax, mpg, engineSize, transmission, fuelType, Manufacturer
29
+ ):
30
+ input_df = pd.DataFrame(
31
+ [[year, mileage, tax, mpg, engineSize, transmission, fuelType, Manufacturer]],
32
+ columns=feature_columns,
33
+ )
34
+ prediction = pipeline.predict(input_df)
35
+ return prediction[0][0]
36
+
37
+
38
+ # Streamlit app layout
39
+ st.write("Enter the details of the car to predict its price:")
40
+
41
+ # Input fields
42
+ year = st.number_input("Year", min_value=1900, max_value=2100, value=2010)
43
+ mileage = st.number_input("Mileage", min_value=0, value=50000)
44
+ tax = st.number_input("Tax (£)", min_value=0, value=100)
45
+ mpg = st.number_input("MPG", min_value=0, value=50)
46
+ engineSize = st.number_input("Engine Size (L)", min_value=0.0, value=2.0)
47
+ transmission = st.selectbox(
48
+ "Transmission", options=["Automatic", "Semi-Auto", "Manual"]
49
+ )
50
+ fuelType = st.selectbox("Fuel Type", options=["Petrol", "Diesel", "Electric", "Hybrid"])
51
+ Manufacturer = st.selectbox(
52
+ "Manufacturer",
53
+ options=[
54
+ "toyota",
55
+ "hyundi",
56
+ "ford",
57
+ "BMW",
58
+ "Audi",
59
+ "merc",
60
+ "volkswagen",
61
+ "vauxhall",
62
+ ],
63
+ )
64
+
65
+ # Button to predict
66
+ if st.button("🔮 Predict Price"):
67
+ price = predict_price(
68
+ year, mileage, tax, mpg, engineSize, transmission, fuelType, Manufacturer
69
+ )
70
+ st.write(f"The predicted price of the car is £{price:.2f}")
71
+
72
+ # Developer Info
73
+
74
+ st.sidebar.title("🚗 Car Price Predictor")
75
+ st.sidebar.subheader("About the Developer")
76
+ st.sidebar.markdown(
77
+ "Developed by [Tajeddine Bourhim](https://tajeddine-portfolio.netlify.app/)."
78
+ )
79
+ st.sidebar.markdown(
80
+ "[![GitHub](https://img.shields.io/badge/GitHub-Profile-blue?logo=github)](https://github.com/scorpionTaj)"
81
+ )
82
+ st.sidebar.markdown(
83
+ "[![LinkedIn](https://img.shields.io/badge/LinkedIn-Profile-blue?logo=linkedin)](https://www.linkedin.com/in/tajeddine-bourhim/)"
84
+ )
85
+ st.sidebar.subheader("📚 About This App")
86
+ st.sidebar.markdown(
87
+ "This app uses a machine learning model to predict the price of a car based on various features."
88
+ )
89
+ st.sidebar.markdown(
90
+ "Model trained using historical car price data and includes features like year, mileage, and more."
91
+ )
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:84816f05306c9974b8e19d920b5d529af65b63bbc522e18f952fa5f4fc2d2fd5
3
+ size 2883
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ streamlit==1.37.1
2
+ pandas==2.2.2
3
+ numpy==2.0.1
4
+ scikit-learn==1.5.1