ConstantCoder commited on
Commit
a654741
·
verified ·
1 Parent(s): 117b31e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -64
app.py CHANGED
@@ -1,84 +1,83 @@
1
- #!/usr/bin/env python
2
- # coding: utf-8
3
-
4
-
5
-
6
-
7
  import pandas as pd
8
- from sklearn.model_selection import train_test_split #veri setini bölme işlemleri
9
- from sklearn.linear_model import LinearRegression #Doğrusal regresyon
10
- from sklearn.metrics import mean_squared_error # modelimizin performansını ölçmek için
11
- from sklearn.compose import ColumnTransformer # sütun dönüşüm işlemleri
12
- from sklearn.preprocessing import OneHotEncoder, StandardScaler # kategori- sayısal dönüşüm ve ölçekleme işlemleri
13
- from sklearn.pipeline import Pipeline # veri işleme hattı
14
  from sklearn.metrics import mean_squared_error, r2_score
 
 
 
 
15
 
 
 
16
 
17
- df=pd.read_excel("cars.xls")
18
- df
19
-
20
- x=df.drop('Price',axis=1) #fiyat sütununu çıkar fiyata etki edenler kalsın
21
- y=df['Price'] #tahmin
22
-
23
 
24
- x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=42)
 
25
 
26
- preprocess=ColumnTransformer(
 
27
  transformers=[
28
- ('num',StandardScaler(),['Mileage', 'Cylinder','Liter','Doors']),
29
- ('cat',OneHotEncoder(),['Make','Model','Trim','Type'])
30
  ]
31
  )
32
 
 
 
33
 
34
- my_model=LinearRegression()
35
-
36
-
37
- pipe=Pipeline(steps=[('preprocessor',preprocess),('model',my_model)])
38
-
39
 
40
- pipe.fit(x_train,y_train)
 
41
 
 
 
 
 
42
 
43
-
44
-
45
- y_pred=pipe.predict(x_test)
46
- print('RMSE',mean_squared_error(y_test,y_pred)**0.5)
47
- print('R2',r2_score(y_test,y_pred))
48
-
49
-
50
- import streamlit as st
51
- #price tahmin fonksiyonu tanımla
52
- def price(make,model,trim,mileage,car_type,cylinder,liter,doors,cruise,sound,leather):
53
- input_data=pd.DataFrame({'Make':[make],
54
- 'Model':[model],
55
- 'Trim':[trim],
56
- 'Mileage':[mileage],
57
- 'Type':[car_type],
58
- 'Cylinder':[cylinder],
59
- 'Liter':[liter],
60
- 'Doors':[doors],
61
- 'Cruise':[cruise],
62
- 'Sound':[sound],
63
- 'Leather':[leather]})
64
- prediction=pipe.predict(input_data)[0]
65
- return prediction
66
  st.title("II. El Araba Fiyatı Tahmin:red_car: @aysel_olcer")
67
  st.write('Arabanın özelliklerini seçiniz')
68
- make=st.selectbox('Marka',df['Make'].unique())
69
- model=st.selectbox('Model',df[df['Make']==make]['Model'].unique())
70
- trim=st.selectbox('Trim',df[(df['Make']==make) &(df['Model']==model)]['Trim'].unique())
71
- mileage=st.number_input('Kilometre',100,200000)
72
- car_type=st.selectbox('Araç Tipi',df['Type'].unique())
73
- cylinder=st.selectbox('Cylinder',df['Cylinder'].unique())
74
- liter=st.number_input('Yakıt Hacmi',1,10)
75
- doors=st.selectbox('Kapı sayısı',df['Doors'].unique())
76
- cruise=st.radio('Hız Sbt.',[True,False])
77
- sound=st.radio('Ses Sis.',[True,False])
78
- leather=st.radio('Deri döşemes.',[True,False])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  if st.button('Tahmin Et'):
80
- pred=price(make,model,trim,mileage,car_type,cylinder,liter,doors,cruise,sound,leather)
81
- st.write('Fiyat:$',round(pred[0],2))
82
 
83
 
84
 
 
 
 
 
 
 
 
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.compose import ColumnTransformer
6
+ from sklearn.preprocessing import OneHotEncoder, StandardScaler
7
+ from sklearn.pipeline import Pipeline
8
+ import streamlit as st
9
 
10
+ # Veriyi oku
11
+ df = pd.read_excel("cars.xls")
12
 
13
+ # Özellik ve hedef değişkenleri ayır
14
+ x = df.drop('Price', axis=1)
15
+ y = df['Price']
 
 
 
16
 
17
+ # Veri setini eğitim ve test olarak ayır
18
+ x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
19
 
20
+ # Ön işleme adımları
21
+ preprocess = ColumnTransformer(
22
  transformers=[
23
+ ('num', StandardScaler(), ['Mileage', 'Cylinder', 'Liter', 'Doors']),
24
+ ('cat', OneHotEncoder(), ['Make', 'Model', 'Trim', 'Type', 'Cruise', 'Sound', 'Leather'])
25
  ]
26
  )
27
 
28
+ # Model tanımla
29
+ my_model = LinearRegression()
30
 
31
+ # Pipeline oluştur
32
+ pipe = Pipeline(steps=[('preprocessor', preprocess), ('model', my_model)])
 
 
 
33
 
34
+ # Modeli eğit
35
+ pipe.fit(x_train, y_train)
36
 
37
+ # Tahmin yap ve model performansını değerlendir
38
+ y_pred = pipe.predict(x_test)
39
+ print('RMSE', mean_squared_error(y_test, y_pred) ** 0.5)
40
+ print('R2', r2_score(y_test, y_pred))
41
 
42
+ # Streamlit uygulaması
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  st.title("II. El Araba Fiyatı Tahmin:red_car: @aysel_olcer")
44
  st.write('Arabanın özelliklerini seçiniz')
45
+
46
+ # Kullanıcı girdilerini al
47
+ make = st.selectbox('Marka', df['Make'].unique())
48
+ model = st.selectbox('Model', df[df['Make'] == make]['Model'].unique())
49
+ trim = st.selectbox('Trim', df[(df['Make'] == make) & (df['Model'] == model)]['Trim'].unique())
50
+ mileage = st.number_input('Kilometre', 100, 200000)
51
+ car_type = st.selectbox('Araç Tipi', df['Type'].unique())
52
+ cylinder = st.selectbox('Cylinder', df['Cylinder'].unique())
53
+ liter = st.number_input('Yakıt Hacmi', 1, 10)
54
+ doors = st.selectbox('Kapı sayısı', df['Doors'].unique())
55
+ cruise = st.radio('Hız Sbt.', [True, False])
56
+ sound = st.radio('Ses Sis.', [True, False])
57
+ leather = st.radio('Deri döşemes.', [True, False])
58
+
59
+ # Tahmin fonksiyonu
60
+ def price(make, model, trim, mileage, car_type, cylinder, liter, doors, cruise, sound, leather):
61
+ input_data = pd.DataFrame({
62
+ 'Make': [make],
63
+ 'Model': [model],
64
+ 'Trim': [trim],
65
+ 'Mileage': [mileage],
66
+ 'Type': [car_type],
67
+ 'Cylinder': [cylinder],
68
+ 'Liter': [liter],
69
+ 'Doors': [doors],
70
+ 'Cruise': [cruise],
71
+ 'Sound': [sound],
72
+ 'Leather': [leather]
73
+ })
74
+ prediction = pipe.predict(input_data)[0]
75
+ return prediction
76
+
77
+ # Tahmin yapma butonu ve sonucu gösterme
78
  if st.button('Tahmin Et'):
79
+ pred = price(make, model, trim, mileage, car_type, cylinder, liter, doors, cruise, sound, leather)
80
+ st.write('Fiyat: $', round(pred, 2))
81
 
82
 
83