car_price / app.py
MasterSoftware's picture
Update app.py
e860999 verified
raw
history blame
2.75 kB
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
import streamlit as st
df = pd.read_excel("./cars.xls")
x = df.drop("Price", axis=1)
y = df[["Price"]]
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=20, random_state=42)
preprocessor = ColumnTransformer(
transformers= [
("num", StandardScaler(),["Mileage", "Cylinder", "Liter", "Doors"]),
("cat", OneHotEncoder(), ["Make", "Model", "Trim", "Type"])
]
)
model = LinearRegression()
pipeline = Pipeline(steps=[
("preprocessor", preprocessor),
("regressor", model)
])
pipeline.fit(x_train, y_train)
pred = pipeline.predict(x_test)
rmse = mean_squared_error(pred, y_test)**.5
r2 = r2_score(pred, y_test)
def price_pred(make,model,trim,mileage,car_type,cylinder,liter,doors,cruise,sound,leather):
input_data = pd.DataFrame({
"Make": [make],
"Model": [model],
"Trim": [trim],
"Mileage": [mileage],
"Type": [car_type],
"Cylinder": [cylinder],
"Liter": [liter],
"Doors": [doors],
"Cruise": [cruise],
"Sound": [sound],
"Leather": [leather],
})
prediction = pipeline.predict(input_data)[0]
return prediction
def main():
st.title("MLOps Car Price Prediction :red_car:")
st.write("Enter Car Details to predict the price")
make = st.selectbox("Model", df["Make"].unique())
model = st.selectbox("Model", df[df["Make"] == make]["Model"].unique())
trim = st.selectbox("Trim", df[(df["Make"] == make) & (df["Model"] == model)]["Trim"].unique())
mileage = st.number_input("Mileage", 200, 60000)
car_type = st.selectbox("Type", df["Type"].unique())
cylinder = st.selectbox("Cylinder", df["Cylinder"].unique())
liter = st.number_input("Liter", 1, 6)
doors = st.selectbox("Doors", df["Doors"].unique())
cruise = st.radio("Cruise", [0,1])
sound = st.radio("Sound", [0,1])
leather = st.radio("Leather", [0,1])
if st.button("Predict"):
price = price_pred(make,model,trim,mileage,car_type,cylinder,liter,doors,cruise,sound,leather)
st.write(price)
price = float(price)
st.write(f"The predicted price is : ${price:.2f}")
if __name__ == "__main__":
main()
# make = st.selectbox("Make", df["Make"].unique())
# model = st.selectbox("Model", df[df["Make"]==make]["Model"].unique())
# trim = st.selectbox("Trim", df[df["Model"]==model]["Trim"].unique())