Spaces:
Sleeping
Sleeping
import numpy as np | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
import gradio as gr | |
from huggingface_hub import hf_hub_download | |
# Импорт датасета | |
column_names = [ | |
'Продольное положение центра плавучести', | |
'Призматический коэффициент', | |
'Отношение длины к водоизмещению', | |
'Отношение осадки к балке', | |
'Отношение длины к балке', | |
'Число Фруда', | |
'Остаточное сопротивление на единицу водоизмещения' | |
] | |
dataset = pd.read_csv(r'yacht_hydrodynamics.csv', encoding='utf8', sep = ' ', names = column_names) | |
X = dataset.iloc[:, :-1].values | |
y = dataset.iloc[:, 6].values | |
from sklearn.impute import SimpleImputer | |
imputer = SimpleImputer(missing_values = np.nan, strategy = 'mean') | |
X[:, [1]] = imputer.fit_transform(X[:, [1]]) | |
# Разделение данных на обучающий и тестовый наборы | |
from sklearn.model_selection import train_test_split | |
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, | |
random_state = 0) | |
# Подгонка обучающего набора к регрессору | |
from sklearn.ensemble import RandomForestRegressor | |
rfr_model = RandomForestRegressor() | |
rfr_model.fit(X_train, y_train) | |
num_features = X_train.shape[1] | |
model = RandomForestRegressor() | |
model.fit(X_train, y_train) | |
# Объявление глобальных переменных | |
продольное_положение_центра_плавучести = None | |
призматический_коэффициент = None | |
отношение_длины_к_водоизмещению= None | |
отношение_осадки_к_балке = None | |
отношение_длины_к_балке = None | |
число_Фруда = None | |
# Функция предсказания | |
def predict(Продольное_положение_центра_плавучести, | |
Призматический_коэффициент, | |
Отношение_длины_к_водоизмещению, | |
Отношение_осадки_к_балке, | |
Отношение_длины_к_балке, | |
Число_Фруда): | |
global продольное_положение_центра_плавучести | |
global призматический_коэффициент | |
global отношение_длины_к_водоизмещению | |
global отношение_осадки_к_балке | |
global отношение_длины_к_балке | |
global число_Фруда | |
продольное_положение_центра_плавучести = Продольное_положение_центра_плавучести | |
призматический_коэффициент = Призматический_коэффициент | |
отношение_длины_к_водоизмещению = Отношение_длины_к_водоизмещению | |
отношение_осадки_к_балке = Отношение_осадки_к_балке | |
отношение_длины_к_балке = Отношение_длины_к_балке | |
число_Фруда = Число_Фруда | |
user_features = [] | |
user_features.append(продольное_положение_центра_плавучести) | |
user_features.append(призматический_коэффициент) | |
user_features.append(отношение_длины_к_водоизмещению) | |
user_features.append(отношение_осадки_к_балке) | |
user_features.append(отношение_длины_к_балке) | |
user_features.append(число_Фруда) | |
input_data = np.array([user_features]) | |
return f"Остаточное сопротивление: {model.predict(input_data)[0]}" | |
#Создание интерфейса Gradio | |
interface = gr.Interface( | |
fn= predict, | |
inputs=[gr.Textbox(label="Продольное положение центра плавучести"), | |
gr.Textbox(label="Призматический коэффициент"), | |
gr.Textbox(label="Отношение длины к водоизмещению"), | |
gr.Textbox(label="Отношение осадки к балке"), | |
gr.Textbox(label="Отношение длины к балке"), | |
gr.Textbox(label="Число Фруда"), | |
], | |
outputs=["text"], | |
) | |
interface.launch() |