-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathapp.py
104 lines (75 loc) · 2.96 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import pandas as pd
import streamlit as st
from PIL import Image
from model import open_data, preprocess_data, split_data, load_model_and_predict
def process_main_page():
show_main_page()
process_side_bar_inputs()
def show_main_page():
image = Image.open('data/titanic.jpg')
st.set_page_config(
layout="wide",
initial_sidebar_state="auto",
page_title="Demo Titanic",
page_icon=image,
)
st.write(
"""
# Классификация пассажиров титаника
Определяем, кто из пассажиров выживет, а кто – нет.
"""
)
st.image(image)
def write_user_data(df):
st.write("## Ваши данные")
st.write(df)
def write_prediction(prediction, prediction_probas):
st.write("## Предсказание")
st.write(prediction)
st.write("## Вероятность предсказания")
st.write(prediction_probas)
def process_side_bar_inputs():
st.sidebar.header('Заданные пользователем параметры')
user_input_df = sidebar_input_features()
train_df = open_data()
train_X_df, _ = split_data(train_df)
full_X_df = pd.concat((user_input_df, train_X_df), axis=0)
preprocessed_X_df = preprocess_data(full_X_df, test=False)
user_X_df = preprocessed_X_df[:1]
write_user_data(user_X_df)
prediction, prediction_probas = load_model_and_predict(user_X_df)
write_prediction(prediction, prediction_probas)
def sidebar_input_features():
sex = st.sidebar.selectbox("Пол", ("Мужской", "Женский"))
embarked = st.sidebar.selectbox("Порт посадки", (
"Шербур-Октевиль", "Квинстаун", "Саутгемптон"))
pclass = st.sidebar.selectbox("Класс", ("Первый", "Второй", "Третий"))
age = st.sidebar.slider("Возраст", min_value=1, max_value=80, value=20,
step=1)
sib_sp = st.sidebar.slider(
"Количетсво ваших братьев / сестер / супругов на борту",
min_value=0, max_value=10, value=0, step=1)
par_ch = st.sidebar.slider("Количетсво ваших детей / родителей на борту",
min_value=0, max_value=10, value=0, step=1)
translatetion = {
"Мужской": "male",
"Женский": "female",
"Шербур-Октевиль": "C",
"Квинстаун": "Q",
"Саутгемптон": "S",
"Первый": 1,
"Второй": 2,
"Третий": 3,
}
data = {
"Pclass": translatetion[pclass],
"Sex": translatetion[sex],
"Age": age,
"SibSp": sib_sp,
"Parch": par_ch,
"Embarked": translatetion[embarked]
}
df = pd.DataFrame(data, index=[0])
return df
if __name__ == "__main__":
process_main_page()