File size: 3,585 Bytes
0f320db
 
 
 
 
 
 
510ca6a
 
 
 
0f320db
510ca6a
0f320db
 
 
 
 
510ca6a
0f320db
 
 
26141ca
 
0f320db
 
 
 
 
 
 
 
 
 
 
 
 
 
510ca6a
0f320db
 
 
 
 
26141ca
510ca6a
0f320db
 
 
 
 
bc4a214
0f320db
 
a984107
0f320db
 
 
 
 
730571e
 
 
 
0f320db
 
 
1ba7565
0f320db
730571e
5b6bed4
0f320db
510ca6a
 
 
730571e
0f320db
 
7a5c0c5
0f320db
 
 
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
#!/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")

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

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],
                             '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çiniz')

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)
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, 2))