DimaJett commited on
Commit
6053fdb
·
verified ·
1 Parent(s): 58d1358

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +105 -0
app.py ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ import matplotlib.pyplot as plt
4
+ import gradio as gr
5
+ from huggingface_hub import hf_hub_download
6
+
7
+
8
+ # Импорт датасета
9
+ column_names = [
10
+ 'Продольное положение центра плавучести',
11
+ 'Призматический коэффициент',
12
+ 'Отношение длины к водоизмещению',
13
+ 'Отношение осадки к балке',
14
+ 'Отношение длины к балке',
15
+ 'Число Фруда',
16
+ 'Остаточное сопротивление на единицу водоизмещения'
17
+ ]
18
+
19
+ dataset = pd.read_csv(r'yacht_hydrodynamics.csv', encoding='utf8', sep = ' ', names = column_names)
20
+
21
+
22
+ X = dataset.iloc[:, :-1].values
23
+ y = dataset.iloc[:, 6].values
24
+ from sklearn.impute import SimpleImputer
25
+ imputer = SimpleImputer(missing_values = np.nan, strategy = 'mean')
26
+ X[:, [1]] = imputer.fit_transform(X[:, [1]])
27
+
28
+
29
+ # Разделение данных на обучающий и тестовый наборы
30
+ from sklearn.model_selection import train_test_split
31
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25,
32
+ random_state = 0)
33
+
34
+
35
+ # Подгонка обучающего набора к регрессору
36
+ from sklearn.ensemble import RandomForestRegressor
37
+ rfr_model = RandomForestRegressor()
38
+ rfr_model.fit(X_train, y_train)
39
+
40
+
41
+ num_features = X_train.shape[1]
42
+
43
+
44
+ model = RandomForestRegressor()
45
+ model.fit(X_train, y_train)
46
+
47
+
48
+ # Объявление глобальных переменных
49
+ продольное_положение_центра_плавучести = None
50
+ призматический_коэффициент = None
51
+ отношение_длины_к_водоизмещению= None
52
+ отношение_осадки_к_балке = None
53
+ отношение_длины_к_балке = None
54
+ число_Фруда = None
55
+
56
+
57
+ # Функция предсказания
58
+ def predict(Продольное_положение_центра_плавучести,
59
+ Призматический_коэффициент,
60
+ Отношение_длины_к_водоизмещению,
61
+ Отношение_осадки_к_балке,
62
+ Отношение_длины_к_балке,
63
+ Число_Фруда):
64
+
65
+ global продольное_положение_центра_плавучести
66
+ global призматический_коэффициент
67
+ global отношение_длины_к_водоизмещению
68
+ global отношение_осадки_к_балке
69
+ global отношение_длины_к_балке
70
+ global число_Фруда
71
+
72
+
73
+ продольное_положение_центра_плавучести = Продольное_положение_центра_плавучести
74
+ призматический_коэффициент = Призматический_коэффициент
75
+ отношение_длины_к_водоизмещению = Отношение_длины_к_водоизмещению
76
+ отношение_осадки_к_балке = Отношение_осадки_к_балке
77
+ отношение_длины_к_балке = Отношение_длины_к_балке
78
+ число_Фруда = Число_Фруда
79
+
80
+
81
+ user_features = []
82
+ user_features.append(продольное_положение_центра_плавучести)
83
+ user_features.append(призматический_коэффициент)
84
+ user_features.append(отношение_длины_к_водоизмещению)
85
+ user_features.append(отношение_осадки_к_балке)
86
+ user_features.append(отношение_длины_к_балке)
87
+ user_features.append(число_Фруда)
88
+ input_data = np.array([user_features])
89
+ return f"Остаточное сопротивление: {model.predict(input_data)[0]}"
90
+
91
+
92
+ #Создание интерфейса Gradio
93
+ interface = gr.Interface(
94
+ fn= predict,
95
+ inputs=[gr.Textbox(label="Продольное положение центра плавучести"),
96
+ gr.Textbox(label="Призматический коэффициент"),
97
+ gr.Textbox(label="Отношение длины к водоизмещению"),
98
+ gr.Textbox(label="Отношение осадки к балке"),
99
+ gr.Textbox(label="Отношение длины к балке"),
100
+ gr.Textbox(label="Число Фруда"),
101
+ ],
102
+ outputs=["text"],
103
+ )
104
+
105
+ interface.launch()