ibrahim yıldız commited on
Commit
14d7e72
·
verified ·
1 Parent(s): b5e07bc

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +77 -0
  2. cars.xls +0 -0
app.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ from sklearn.model_selection import train_test_split
3
+ from sklearn.linear_model import LinearRegression
4
+ from sklearn.metrics import mean_squared_error, r2_score
5
+ from sklearn.pipeline import Pipeline
6
+ from sklearn.compose import ColumnTransformer
7
+ from sklearn.preprocessing import StandardScaler, OneHotEncoder
8
+ import streamlit as st
9
+
10
+ df=pd.read_excel('cars.xls')
11
+
12
+ x = df.drop('Price', axis=1)
13
+ y = df[['Price']]
14
+
15
+ x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=20, random_state=42)
16
+
17
+
18
+ #get dummies yapılmış gibi hafızasında tutuyor
19
+ preprocessor = ColumnTransformer(
20
+ transformers =[
21
+ ('num', StandardScaler(),['Mileage', 'Cylinder', 'Liter', 'Doors']),
22
+ ('cat', OneHotEncoder(), ['Make', 'Model', 'Trim', 'Type'])
23
+ ]
24
+ )
25
+
26
+ model = LinearRegression()
27
+
28
+ #çalıştır, rakamları standart scalor ile normalize edicek, yazı olanları da get dummies ile rakamlara çevirecek
29
+ pipeline = Pipeline(steps = [('preprocessor', preprocessor),('regressor', model)])
30
+
31
+ pipeline.fit(x_train, y_train)
32
+ pred = pipeline.predict(x_test)
33
+
34
+ rmse = mean_squared_error(pred, y_test)*.5
35
+ r2 = r2_score(pred, y_test)
36
+
37
+ def price_pred(make, model, trim, mileage, car_type, cylinder, liter, doors, cruise, sound, leather):
38
+ input_data = pd.DataFrame({
39
+ 'Make': [make],
40
+ 'Model': [model],
41
+ 'Trim': [trim],
42
+ 'Mileage': [mileage],
43
+ 'Type': [car_type],
44
+ 'Cylinder': [cylinder],
45
+ 'Liter': [liter],
46
+ 'Doors': [doors],
47
+ 'Cruise': [cruise],
48
+ 'Sound': [sound],
49
+ 'Leather': [leather]
50
+ })
51
+
52
+ prediction = pipeline.predict(input_data)[0]
53
+ return prediction
54
+
55
+ st.title('MLops Car Price Prediction :red_car:')
56
+ st.write('Enter Car Details to predict the price')
57
+
58
+ def main():
59
+ make = st.selectbox('Make', df['Make'].unique())
60
+ model = st.selectbox('Model', df[df['Make']==make]['Model'].unique())
61
+ trim = st.selectbox('Trim', df[(df['Make']==make)& (df['Model']==model)]['Trim'].unique())
62
+ mileage = st.slider('Mileage', 200, 600000)
63
+ car_type = st.selectbox('Type', df['Type'].unique())
64
+ cylinder = st.selectbox('Cylinder', df['Cylinder'].unique())
65
+ liter = st.number_input('Liter', 1,6)
66
+ doors = st.selectbox('Doors', df['Doors'].unique())
67
+ cruise = st.radio('Cruise',[0,1])
68
+ sound = st.radio('Sound',[0,1])
69
+ leather = st.radio('Leather',[0,1])
70
+
71
+ if st.button('Predict'):
72
+ price = price_pred(make, model, trim, mileage, car_type, cylinder, liter, doors, cruise, sound, leather)
73
+ st.write(f'The predicted price is: ${price[0]:.2f}')
74
+
75
+
76
+ if __name__ == '__main__':
77
+ main()
cars.xls ADDED
Binary file (142 kB). View file