File size: 3,435 Bytes
68e5899
 
 
 
9bf5729
68e5899
 
b0d2b63
68e5899
 
 
 
 
 
 
b0d2b63
 
68e5899
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0f6f033
 
68e5899
0f6f033
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b0d2b63
0f6f033
 
 
 
68e5899
0f6f033
 
 
 
 
 
 
 
 
b0d2b63
68e5899
c01b7b5
9bf5729
68e5899
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python
# coding: utf-8

# # Car Prediction #
# İkinci el araç fiyatlarını (özelliklerine göre) tahmin eden model oluşturma ve MLOPs

import pandas as pd
from sklearn.model_selection import train_test_split #Veri setini bölme işlemleri
from sklearn.linear_model import LinearRegression #Dogrusal Regresyon
from sklearn.metrics import r2_score, mean_squared_error #modelimizin performansını ölçmek için
from sklearn.compose import ColumnTransformer #Sütun dönüşüm işlemleri
from sklearn.preprocessing import OneHotEncoder, StandardScaler #Kategori - Sayısal dönüşüm ve ölçeklendirme
from sklearn.pipeline import Pipeline #Veri işleme hattı

df=pd.read_excel("cars.xls")
#df.head()
#df.info()

#Veri ön işleme
X=df.drop('Price',axis=1) #Fiyat sutunu çıkar fiyata etki edenler kalsın
y=df['Price'] #tahmin edilecek sutun

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Veri ön işleme, standartlaştırma ve OHE işlemlerini otomatikleştiriyoruz (Standartlaştırıyoruz).Artık preprocess kullanarak kullanıcıda arayüz aracılığıyla gelen veriyi  uygun hale çevirebiliriz.
preprocess=ColumnTransformer(
    transformers=[
        ('num', StandardScaler(),['Mileage','Cylinder','Liter','Doors']),
        ('cat', OneHotEncoder(), ['Make','Model','Trim','Type'])
    ]
)

my_model=LinearRegression()

#pipline tanımlama
pipe=Pipeline(steps=[('preprocessor', preprocess), ('model', my_model)])

#pipline fit edilmesi
pipe.fit(X_train, y_train)

y_pred=pipe.predict(X_test)
mean_squared_error(y_test,y_pred)**0.5,r2_score(y_test,y_pred)

# Python ile yapılan çalışmaların hızlı bir şekilde deploy edilmesi için HTML render arayüzler tasarlamamızı sağlar
import streamlit as st

#Fiyat tahmin fonksiyonu tanımlama
def price(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],
		'Car_type':[car_type],
		'Cylinder':[cylinder],
		'Liter':[liter],
		'Doors':[doors],
		'Cruise':[cruise],
		'Sound':[sound],
		'Leather':[leather]
		})
	prediction=pipe.predict(input_data)[0]
	return prediction
    
st.title("II. El Araba Fiyat Tahmini :red_car: @miturkoglu96")
st.write("Arabanın özelliklerini seçin")
make=st.selectbox("Marka",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("Kilometre",200,60000)
#mileage=st.slider("Mileage",int(df['Mileage'].min()),int(df['Mileage'].max()))
#car_type=st.selectbox('Araç Tipi',df['Type'].unique())         
car_type=st.selectbox("Araç Tipi",df[(df['Make']==make) & (df['Model']==model) & (df['Trim']==trim)]['Type'].unique())
cylinder=st.selectbox("Silindir",df['Cylinder'].unique())
liter=st.number_input("Yakıt Hacmi",1,6)
doors=st.selectbox("Kapı Sayısı",df['Doors'].unique())
cruise=st.radio("Hız Sabitleyici",[True,False])
sound=st.radio("Ses Sistemi",[True,False])
leather=st.radio("Deri döşeme",[True,False])    

if st.button("Tahmin Et"):
    pred=price(make,model,trim,mileage,car_type,cylinder,liter,doors,cruise,sound,leather)
    #st.write("Tahmini Fiyat :red_car:  $",round(pred[0],2)) #Hatalı!
    st.write("Tahmini Fiyat :red_car: $", round(pred, 2))