Zguin commited on
Commit
9e24c29
·
verified ·
1 Parent(s): e564c5b

Upload 5 files

Browse files
chugun.csv ADDED
The diff for this file is too large to render. See raw diff
 
coke.csv ADDED
The diff for this file is too large to render. See raw diff
 
gb_model_chugun.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:287b2446fef922ee3d0e287a4ba25170e0c380144093a4a50d460fc987248a88
3
+ size 887113
gb_model_coke.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca84ef29914ab4026cf2f0d9090a355f466ee1897d2d6946d6ac41e6b6973e8d
3
+ size 214419
mmk_informservice_project_dp_10.py ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """MMK-Informservice_project_DP-10.ipynb
3
+
4
+ Automatically generated by Colab.
5
+
6
+ Original file is located at
7
+ https://colab.research.google.com/drive/1wmkVhN6rkUnZhbwxxXnVsRP7A-7PC_1p
8
+ """
9
+
10
+ import gradio as gr
11
+ import pandas as pd
12
+ import numpy as np
13
+ import pickle
14
+
15
+ # Загрузка датасетов
16
+ chugun_df = pd.read_csv("chugun.csv")
17
+ coke_df = pd.read_csv("coke.csv")
18
+
19
+ # Загрузка моделей
20
+ with open("gb_model_chugun.pkl", "rb") as f:
21
+ gb_model_chugun = pickle.load(f)
22
+ with open("gb_model_coke.pkl", "rb") as f:
23
+ gb_model_coke = pickle.load(f)
24
+
25
+ import gradio as gr
26
+ import pandas as pd
27
+ import numpy as np
28
+ import pickle
29
+
30
+ # Загрузка датасетов
31
+ chugun_df = pd.read_csv("chugun.csv")
32
+ coke_df = pd.read_csv("coke.csv")
33
+
34
+ # Загрузка моделей
35
+ with open("gb_model_chugun.pkl", "rb") as f:
36
+ gb_model_chugun = pickle.load(f)
37
+ with open("gb_model_coke.pkl", "rb") as f:
38
+ gb_model_coke = pickle.load(f)
39
+
40
+ # Функция для получения случайной строки из датасета
41
+ def get_random_sample(dataset):
42
+ return dataset.sample(1)
43
+
44
+ # Функция для форматирования признаков с учетом ожидаемых признаков модели
45
+ def format_features(sample, target_column, model):
46
+ # Удаляем целевую переменную из признаков
47
+ features = sample.drop(columns=[target_column])
48
+ feature_names = list(features.columns)
49
+
50
+ # Проверяем, совпадают ли признаки с ожидаемыми моделью
51
+ expected_features = model.feature_names_in_ if hasattr(model, 'feature_names_in_') else feature_names
52
+ if set(feature_names) != set(expected_features):
53
+ missing_features = set(expected_features) - set(feature_names)
54
+ extra_features = set(feature_names) - set(expected_features)
55
+ if missing_features:
56
+ raise ValueError(f"Датасет не содержит ожидаемые признаки: {missing_features}")
57
+ if extra_features:
58
+ # Удаляем лишние признаки
59
+ features = features[expected_features]
60
+ feature_names = expected_features
61
+
62
+ feature_values = features.values[0]
63
+ return feature_names, feature_values
64
+
65
+ # Основная функция для предсказания
66
+ def predict(model_choice):
67
+ if model_choice == "Производство чугуна":
68
+ dataset = chugun_df
69
+ target_column = "Количество чугуна (т)"
70
+ model = gb_model_chugun
71
+ else:
72
+ dataset = coke_df
73
+ target_column = "Удельный расход кокса (кг/т)"
74
+ model = gb_model_coke
75
+
76
+ # Получаем случайную строку
77
+ sample = get_random_sample(dataset)
78
+ feature_names, feature_values = format_features(sample, target_column, model)
79
+ actual_value = sample[target_column].values[0]
80
+
81
+ # Преобразуем входные данные в массив
82
+ input_data = np.array([feature_values])
83
+
84
+ # Предсказание
85
+ prediction = model.predict(input_data)[0]
86
+
87
+ # Расчет процентной ошибки
88
+ error_percent = abs((prediction - actual_value) / actual_value) * 100
89
+
90
+ # Формирование результата
91
+ result = f"Предсказанное значение: {prediction:.2f}\n"
92
+ result += f"Реальное значение: {actual_value:.2f}\n"
93
+ result += f"Процент ошибки: {error_percent:.2f}%"
94
+
95
+ return (
96
+ gr.Dataframe(headers=["Признак"], value=[[name] for name in feature_names]),
97
+ gr.Dataframe(headers=["Значение"], value=[[value] for value in feature_values]),
98
+ result
99
+ )
100
+
101
+ # Создание интерфейса Gradio
102
+ with gr.Blocks() as demo:
103
+
104
+ # Выбор модели
105
+ model_choice = gr.Dropdown(
106
+ choices=["Производство чугуна", "Удельный расход кокса"],
107
+ label="Выберите модель",
108
+ value="Производство чугуна"
109
+ )
110
+
111
+ # Вывод признаков
112
+ with gr.Row():
113
+ feature_display = gr.Dataframe(headers=["Признак"], value=[])
114
+ value_display = gr.Dataframe(headers=["Значение"], value=[])
115
+
116
+ # Кнопка предсказания
117
+ predict_button = gr.Button("Предсказать")
118
+
119
+ # Вывод результата
120
+ output = gr.Textbox(label="Результат предсказания")
121
+
122
+ # Логика предсказания
123
+ predict_button.click(
124
+ fn=predict,
125
+ inputs=model_choice,
126
+ outputs=[feature_display, value_display, output]
127
+ )
128
+
129
+ # Запуск приложения
130
+ demo.launch()