Maria15 commited on
Commit
7ea2c78
·
1 Parent(s): fdf04e1

Upload 5 files

Browse files
Files changed (5) hide show
  1. Dias-fertiles-de-una-mujer.jpg +0 -0
  2. cycle.py +97 -0
  3. main.py +16 -0
  4. model_sar.pkl +3 -0
  5. requirements.txt +0 -0
Dias-fertiles-de-una-mujer.jpg ADDED
cycle.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ import pickle
3
+ import streamlit as st
4
+ import datetime
5
+ from PIL import Image
6
+ import pandas as pd
7
+ from datetime import timedelta
8
+
9
+ # ====================== главная страница ============================
10
+ # параметры главной страницы
11
+ # https://docs.streamlit.io/library/api-reference/utilities/st.set_page_config
12
+ st.set_page_config(
13
+ layout="wide",
14
+ initial_sidebar_state="auto",
15
+ page_title="M-cycle",
16
+ page_icon="🧊",
17
+ )
18
+ # ----------- функции -------------------------------------
19
+
20
+ # функция для загрузки картинки с диска
21
+ # кэшируем, иначе каждый раз будет загружаться заново
22
+ @st.cache_data
23
+ def load_image(image_path):
24
+ image = Image.open(image_path)
25
+ # обрезка до нужного размера с сохранением пропорций
26
+ MAX_SIZE = (600, 400)
27
+ image.thumbnail(MAX_SIZE)
28
+ return image
29
+
30
+ # функция загрузки модели
31
+ # кэшируем, иначе каждый раз будет загружаться заново
32
+ @st.cache_data
33
+ def load_model(model_path):
34
+ # загрузка сериализованной модели
35
+ with open(model_path, 'rb') as f:
36
+ model = pickle.load(f)
37
+ return model
38
+
39
+
40
+ # ------------- загрузка картинки для страницы и модели ---------
41
+
42
+ # путь до картинки
43
+ image_path = Path.cwd() / 'Dias-fertiles-de-una-mujer.jpg'
44
+ image = load_image(image_path)
45
+
46
+ # путь до модели
47
+ model_path = Path.cwd() / 'model_sar.pkl'
48
+ model_sar = load_model(model_path)
49
+
50
+
51
+ # ---------- отрисовка текста и картинки ------------------------
52
+ st.write(
53
+ """
54
+ # Прогноз менструального цикла
55
+ Введите ваши данные и получите результат
56
+ """
57
+ )
58
+
59
+ # отрисовка картинки на странице
60
+ st.image(image)
61
+
62
+
63
+ # ====================== боковое меню для ввода данных ===============
64
+
65
+ st.sidebar.header('Введите данные')
66
+
67
+ # словарь с названиями признаков и описанием для удобства
68
+ features_dict = {
69
+ 'date_last': 'Дата последней менструации',
70
+ 'pred_num': 'Прогноз (количество месяцев)',
71
+ }
72
+
73
+ # кнопки - слайдеры для ввода данных человека
74
+ date_last = st.sidebar.date_input(features_dict['date_last'], value=None)
75
+ pred_num = st.sidebar.slider(features_dict['pred_num'], min_value=1, max_value=3, value=1, step=1)
76
+
77
+
78
+ # предикт моделью входных данных, на выходе даты цикла
79
+ st_prediction = model_sar.forecast(pred_num)
80
+ st_prediction_int = st_prediction.astype(int)
81
+ pred_list = st_prediction_int.to_list()
82
+ new_list = []
83
+ for i in range(len(pred_list)):
84
+ new_list.append(pred_list[i] + sum(pred_list[:i]))
85
+ pred_cicle = pd.DataFrame(new_list, columns=['sarima_pred'])
86
+ pred_cicle['sarima_pred'] = pred_cicle['sarima_pred'].astype(str)
87
+ pred_cicle['sarima_pred'] = pred_cicle['sarima_pred'] + ' days'
88
+ pred_cicle['sarima_pred'] = pd.to_timedelta(pred_cicle['sarima_pred'])
89
+ pred_cicle['Даты цикла'] = pd.Timestamp(date_last) + pred_cicle['sarima_pred']
90
+ pred_cicle["Дни овуляции"] = pred_cicle["Даты цикла"] - timedelta(days=14)
91
+ pred_cicle['a'] = '/'
92
+
93
+ # вывести предсказание модели
94
+ st.write("## Даты начала менструального цикла")
95
+ st.write(pred_cicle[['Даты цикла', 'a']].to_string(index=False, header=False))
96
+ st.write("## Дни овуляции")
97
+ st.write(pred_cicle[['Дни овуляции', 'a']].to_string(index=False, header=False))
main.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This is a sample Python script.
2
+
3
+ # Press Shift+F10 to execute it or replace it with your code.
4
+ # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
5
+
6
+
7
+ def print_hi(name):
8
+ # Use a breakpoint in the code line below to debug your script.
9
+ print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
10
+
11
+
12
+ # Press the green button in the gutter to run the script.
13
+ if __name__ == '__main__':
14
+ print_hi('PyCharm')
15
+
16
+ # See PyCharm help at https://www.jetbrains.com/help/pycharm/
model_sar.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:44f3d6e41f2259173fd399e5783cfc0066c4612da0e21930e880116af3254288
3
+ size 923141
requirements.txt ADDED
Binary file (2.21 kB). View file