File size: 3,792 Bytes
68e5899
 
 
 
03899a2
68e5899
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25b05a6
03899a2
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
#!/usr/bin/env python
# coding: utf-8

# # Car Prediction #
# İkinci el araç fiyatlarını (özelliklerine göre) tahmin eden modeller oluşturma ve MLOPs ile Hugging Face üzerinden yayımlayacağız

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
#price 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], 
                             '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:blue_car: @miturkoglu")
st.write('Arabanın özelliklerini seçiniz.Fiyat tahmini yapmak istediğiniz arabanın bilgilerini giriniz')
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',100,200000)
#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('Cylinder',df['Cylinder'].unique())
liter=st.number_input('Yakıt Hacmi',1,10)
doors=st.selectbox('Kapı Sayısı',df['Doors'].unique())
cruise=st.selectbox('Hız Sabitleyici',[True,False])
sound=st.selectbox('Ses Sistemi',[True,False])
leather=st.selectbox('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: $',round(pred[0],2)) #Hatalı!
     st.write('Tahmini Fiyat :blue_car: $', round(pred, 2))