MonitorKarma commited on
Commit
43bf68c
·
verified ·
1 Parent(s): b81773d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +132 -0
app.py ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+ import joblib
4
+ import pickle
5
+ from sklearn.preprocessing import StandardScaler, OneHotEncoder
6
+ from sklearn.compose import ColumnTransformer
7
+ from sklearn.pipeline import Pipeline
8
+ from sklearn.ensemble import RandomForestRegressor
9
+
10
+ # Загружаем сохраненную модель и feature names
11
+ def load_model():
12
+ pipeline = joblib.load('car_price_pipeline.pkl')
13
+ with open('feature_names.pkl', 'rb') as f:
14
+ feature_names = pickle.load(f)
15
+ return pipeline, feature_names
16
+
17
+ # Функция для предсказания
18
+ def predict_car_price(vehicle_manufacturer, vehicle_category, current_mileage,
19
+ vehicle_year, vehicle_gearbox_type, doors_cnt, wheels,
20
+ vehicle_color, car_leather_interior):
21
+
22
+ # Создаем DataFrame из входных данных
23
+ input_data = pd.DataFrame({
24
+ 'vehicle_manufacturer': [vehicle_manufacturer],
25
+ 'vehicle_category': [vehicle_category],
26
+ 'current_mileage': [current_mileage],
27
+ 'vehicle_year': [vehicle_year],
28
+ 'vehicle_gearbox_type': [vehicle_gearbox_type],
29
+ 'doors_cnt': [doors_cnt],
30
+ 'wheels': [wheels],
31
+ 'vehicle_color': [vehicle_color],
32
+ 'car_leather_interior': [car_leather_interior]
33
+ })
34
+
35
+ # Загружаем модель
36
+ pipeline, feature_names = load_model()
37
+
38
+ # Предсказание
39
+ try:
40
+ prediction = pipeline.predict(input_data)[0]
41
+ return f"Предсказанная цена: ${prediction:,.2f}"
42
+ except Exception as e:
43
+ return f"Ошибка предсказания: {str(e)}"
44
+
45
+ # Создаем интерфейс Gradio
46
+ with gr.Blocks(title="Car Price Predictor") as demo:
47
+ gr.Markdown("# 🚗 Car Price Prediction Model")
48
+ gr.Markdown("Введите параметры автомобиля для предсказания цены")
49
+
50
+ with gr.Row():
51
+ with gr.Column():
52
+ vehicle_manufacturer = gr.Dropdown(
53
+ choices=['HYUNDAI', 'TOYOTA', 'BMW', 'MAZDA', 'NISSAN', 'MERCEDES-BENZ',
54
+ 'LEXUS', 'VOLKSWAGEN', 'HONDA', 'FORD', 'AUDI', 'KIA'],
55
+ label="Производитель",
56
+ value='TOYOTA'
57
+ )
58
+
59
+ vehicle_category = gr.Dropdown(
60
+ choices=['Sedan', 'Hatchback', 'Jeep', 'Coupe', 'Minivan', 'Pickup'],
61
+ label="Категория",
62
+ value='Sedan'
63
+ )
64
+
65
+ current_mileage = gr.Number(
66
+ label="Пробег (км)",
67
+ value=100000,
68
+ minimum=0
69
+ )
70
+
71
+ vehicle_year = gr.Slider(
72
+ label="Год выпуска",
73
+ minimum=1990,
74
+ maximum=2024,
75
+ value=2015,
76
+ step=1
77
+ )
78
+
79
+ with gr.Column():
80
+ vehicle_gearbox_type = gr.Dropdown(
81
+ choices=['Automatic', 'Manual', 'Tiptronic'],
82
+ label="Тип коробки передач",
83
+ value='Automatic'
84
+ )
85
+
86
+ doors_cnt = gr.Dropdown(
87
+ choices=['2/3', '4/5'],
88
+ label="Количество дверей",
89
+ value='4/5'
90
+ )
91
+
92
+ wheels = gr.Dropdown(
93
+ choices=['Left wheel', 'Right-hand drive'],
94
+ label="Расположение руля",
95
+ value='Left wheel'
96
+ )
97
+
98
+ vehicle_color = gr.Dropdown(
99
+ choices=['Silver', 'White', 'Grey', 'Black', 'Blue', 'Red'],
100
+ label="Цвет",
101
+ value='Black'
102
+ )
103
+
104
+ car_leather_interior = gr.Radio(
105
+ choices=[0, 1],
106
+ label="Кожаный салон",
107
+ info="0 - Нет, 1 - Да",
108
+ value=1
109
+ )
110
+
111
+ predict_btn = gr.Button("Предсказать цену", variant="primary")
112
+
113
+ output = gr.Textbox(
114
+ label="Результат",
115
+ interactive=False
116
+ )
117
+
118
+ predict_btn.click(
119
+ fn=predict_car_price,
120
+ inputs=[vehicle_manufacturer, vehicle_category, current_mileage,
121
+ vehicle_year, vehicle_gearbox_type, doors_cnt, wheels,
122
+ vehicle_color, car_leather_interior],
123
+ outputs=output
124
+ )
125
+
126
+ gr.Markdown("---")
127
+ gr.Markdown("### Примеры параметров:")
128
+ gr.Markdown("- **TOYOTA, Sedan, 100,000 km, 2015, Automatic** → ~$5,000")
129
+ gr.Markdown("- **BMW, Sedan, 50,000 km, 2018, Automatic** → ~$15,000")
130
+
131
+ if __name__ == "__main__":
132
+ demo.launch()