Solar-Iz commited on
Commit
4ae07ef
·
1 Parent(s): d56b9ca

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +2 -0
  2. Dataset/car_data.txt +3 -0
  3. Model/best_model.cbm +3 -0
  4. app.py +63 -0
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ Dataset/car_data.txt filter=lfs diff=lfs merge=lfs -text
37
+ Model/best_model.cbm filter=lfs diff=lfs merge=lfs -text
Dataset/car_data.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2560eddc941d8dfab12fcb799a2dd0c404fad1b5f935adba2cd31b446c6a778a
3
+ size 416196324
Model/best_model.cbm ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0333c6228cd40fb720629193dda968f91bd3a9ab2be8cae4755e931990db2c42
3
+ size 108454744
app.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import shap
4
+ from catboost import CatBoostRegressor
5
+
6
+ # Загрузка модели
7
+ final_model = CatBoostRegressor()
8
+ final_model.load_model('/home/svetlana/Bootcamp/ds-phase-3/NYtrain/best_model.cbm')
9
+
10
+ # Загрузка данных для предобработки
11
+ df = pd.read_csv('/home/svetlana/Bootcamp/ds-phase-3/NYtrain/car_data.txt', sep=',')
12
+
13
+ # Получаем уникальные бренды и их модели
14
+ unique_brands = df['brand'].unique()
15
+ brand_model_mapping = {brand: df[df['brand'] == brand]['model'].unique() for brand in unique_brands}
16
+
17
+ # Заголовок приложения
18
+ st.title("Прогнозирование цены автомобиля")
19
+
20
+ # Создаем окошки для ввода параметров
21
+ inputs = {}
22
+
23
+ # Выбор бренда
24
+ selected_brand = st.selectbox("Выберите бренд авто", unique_brands)
25
+
26
+ # Выбор модели в зависимости от бренда
27
+ selected_model = st.selectbox("Выберите модель авто", brand_model_mapping[selected_brand])
28
+
29
+ inputs['brand'] = selected_brand
30
+ inputs['model'] = selected_model
31
+
32
+ # Получаем категориальные столбцы из вашего DataFrame
33
+ categorical_columns = ['brand', 'model', 'поколение', 'тип продавца', 'состояние',
34
+ 'модификация', 'тип двигателя', 'коробка передач', 'привод',
35
+ 'комплектация', 'тип кузова', 'цвет', 'авито оценка']
36
+
37
+ # Остальные окошки для ввода параметров
38
+ for column in categorical_columns:
39
+ if column not in ['brand', 'model']:
40
+ if column == 'год выпуска' or column == 'пробег' or column == 'объем двигателя':
41
+ inputs[column] = st.number_input(f"Введите значение для {column}")
42
+ else:
43
+ inputs[column] = st.text_input(f"Введите значение для {column}")
44
+
45
+ # Кнопка для запуска предсказания
46
+ if st.button("Предсказать цену"):
47
+ # Создаем DataFrame из введенных данных
48
+ input_data = pd.DataFrame(inputs, index=[0])
49
+
50
+ # Получение предсказания
51
+ predicted_price = final_model.predict(input_data)[0]
52
+
53
+ # Вывод результатов
54
+ st.write(f"Прогнозируемая цена авто: {predicted_price} руб.")
55
+
56
+ # # Расчет важности фичей с использованием SHAP
57
+ # explainer = shap.TreeExplainer(final_model)
58
+ # shap_values = explainer.shap_values(input_data)
59
+
60
+ # # Отображение SHAP force plot
61
+ # st.write("SHAP Force Plot:")
62
+ # shap.force_plot(explainer.expected_value, shap_values, input_data, matplotlib=True, show=False)
63
+ # st.pyplot()