SUNGJIN LEE
commited on
Commit
•
f0662e2
1
Parent(s):
9382be8
페이지 구조 개선
Browse files- .streamlit/config.toml +3 -0
- app.py +8 -2
- data.py +3 -0
- pages/About.py +0 -4
- pages/Dashboard.py +1 -3
- pages/Data.py +20 -0
- pages/Home.py +1 -6
- pages/Recommendation System.py +2 -17
.streamlit/config.toml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
[server]
|
2 |
+
maxUploadSize = 1000
|
3 |
+
maxMessageSize = 1000
|
app.py
CHANGED
@@ -5,6 +5,7 @@ if "logged_in" not in st.session_state:
|
|
5 |
st.session_state.logged_in = False
|
6 |
|
7 |
def login():
|
|
|
8 |
with st.form("Login"):
|
9 |
st.write("### Login")
|
10 |
username = st.text_input("Username", type="default")
|
@@ -31,6 +32,10 @@ Home = st.Page(
|
|
31 |
About = st.Page(
|
32 |
"pages/About.py", title="About", icon=":material/info:"
|
33 |
)
|
|
|
|
|
|
|
|
|
34 |
Dashboard = st.Page(
|
35 |
"pages/Dashboard.py", title="Dashboard", icon=":material/dashboard:"
|
36 |
)
|
@@ -42,8 +47,9 @@ Recommendation_System = st.Page(
|
|
42 |
if st.session_state.logged_in:
|
43 |
pg = st.navigation(
|
44 |
{
|
45 |
-
"": [Home,
|
46 |
-
"System" : [Dashboard, Recommendation_System]
|
|
|
47 |
}
|
48 |
)
|
49 |
else:
|
|
|
5 |
st.session_state.logged_in = False
|
6 |
|
7 |
def login():
|
8 |
+
st.write("# SKT AI Fellowship Team ASAP 👋")
|
9 |
with st.form("Login"):
|
10 |
st.write("### Login")
|
11 |
username = st.text_input("Username", type="default")
|
|
|
32 |
About = st.Page(
|
33 |
"pages/About.py", title="About", icon=":material/info:"
|
34 |
)
|
35 |
+
|
36 |
+
# Data = st.Page(
|
37 |
+
# "pages/Data.py", title="Data", icon=":material/data_usage:"
|
38 |
+
# )
|
39 |
Dashboard = st.Page(
|
40 |
"pages/Dashboard.py", title="Dashboard", icon=":material/dashboard:"
|
41 |
)
|
|
|
47 |
if st.session_state.logged_in:
|
48 |
pg = st.navigation(
|
49 |
{
|
50 |
+
"": [Home, About],
|
51 |
+
"System" : [Data, Dashboard, Recommendation_System],
|
52 |
+
"Account": [logout_page]
|
53 |
}
|
54 |
)
|
55 |
else:
|
data.py
CHANGED
@@ -16,6 +16,9 @@ def load_data():
|
|
16 |
dataset = load_dataset('skt-asap/busan-poc-dataset', data_files=data_files, token=token)
|
17 |
df = dataset['train'].to_pandas()
|
18 |
|
|
|
|
|
|
|
19 |
df['ru_svc_lat_val'] = df['ru_svc_lat_val'].astype(float)
|
20 |
df['ru_svc_lng_val'] = df['ru_svc_lng_val'].astype(float)
|
21 |
|
|
|
16 |
dataset = load_dataset('skt-asap/busan-poc-dataset', data_files=data_files, token=token)
|
17 |
df = dataset['train'].to_pandas()
|
18 |
|
19 |
+
df.fillna(0, inplace=True)
|
20 |
+
df.drop(columns=['Unnamed: 0'], inplace=True)
|
21 |
+
|
22 |
df['ru_svc_lat_val'] = df['ru_svc_lat_val'].astype(float)
|
23 |
df['ru_svc_lng_val'] = df['ru_svc_lng_val'].astype(float)
|
24 |
|
pages/About.py
CHANGED
@@ -3,10 +3,6 @@ from streamlit.logger import get_logger
|
|
3 |
|
4 |
LOGGER = get_logger(__name__)
|
5 |
|
6 |
-
st.set_page_config(
|
7 |
-
page_title="About"
|
8 |
-
)
|
9 |
-
|
10 |
st.markdown(
|
11 |
"""
|
12 |
##### *🚀 Team ASAP은 네트워크의 에너지 소비를 줄이고 탄소 배출을 감소시키기 위한 AI 알고리즘을 개발하고 있습니다. 우리의 목표는 모바일 네트워크에서 에너지 효율성을 극대화하여 지속 가능한 발전을 이루는 것입니다.*
|
|
|
3 |
|
4 |
LOGGER = get_logger(__name__)
|
5 |
|
|
|
|
|
|
|
|
|
6 |
st.markdown(
|
7 |
"""
|
8 |
##### *🚀 Team ASAP은 네트워크의 에너지 소비를 줄이고 탄소 배출을 감소시키기 위한 AI 알고리즘을 개발하고 있습니다. 우리의 목표는 모바일 네트워크에서 에너지 효율성을 극대화하여 지속 가능한 발전을 이루는 것입니다.*
|
pages/Dashboard.py
CHANGED
@@ -6,9 +6,7 @@ import map
|
|
6 |
import js
|
7 |
import chart
|
8 |
|
9 |
-
st.set_page_config(
|
10 |
-
layout="wide",
|
11 |
-
page_icon="🗺️")
|
12 |
|
13 |
with st.sidebar:
|
14 |
with st.spinner("데이터 로딩 중..."):
|
|
|
6 |
import js
|
7 |
import chart
|
8 |
|
9 |
+
st.set_page_config(layout="wide")
|
|
|
|
|
10 |
|
11 |
with st.sidebar:
|
12 |
with st.spinner("데이터 로딩 중..."):
|
pages/Data.py
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
from datasets import load_dataset
|
4 |
+
import data
|
5 |
+
import seaborn as sns
|
6 |
+
|
7 |
+
st.set_page_config(layout="wide")
|
8 |
+
|
9 |
+
with st.spinner("데이터 로딩 중..."):
|
10 |
+
df, df_map = data.load_data()
|
11 |
+
st.dataframe(df)
|
12 |
+
|
13 |
+
st.title("Data Exploration")
|
14 |
+
|
15 |
+
st.write("### 데이터 요약")
|
16 |
+
st.write(df.describe())
|
17 |
+
|
18 |
+
st.write("### 데이터 시각화")
|
19 |
+
sns.pairplot(df)
|
20 |
+
st.pyplot()
|
pages/Home.py
CHANGED
@@ -4,10 +4,5 @@ import yaml
|
|
4 |
|
5 |
LOGGER = get_logger(__name__)
|
6 |
|
7 |
-
st.set_page_config(
|
8 |
-
page_title="SKT AI Fellowship Team ASAP",
|
9 |
-
page_icon="📡",
|
10 |
-
layout="centered"
|
11 |
-
)
|
12 |
-
|
13 |
st.write("# SKT AI Fellowship Team ASAP 👋")
|
|
|
|
4 |
|
5 |
LOGGER = get_logger(__name__)
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
st.write("# SKT AI Fellowship Team ASAP 👋")
|
8 |
+
|
pages/Recommendation System.py
CHANGED
@@ -5,12 +5,8 @@ from streamlit_folium import st_folium
|
|
5 |
import map_recommend
|
6 |
import data
|
7 |
|
8 |
-
|
9 |
-
st.set_page_config(page_title="Frequency Off Recommendation System",
|
10 |
-
layout="centered",
|
11 |
-
page_icon="📡")
|
12 |
|
13 |
-
# 세션 상태 초기화
|
14 |
if 'run_button_clicked' not in st.session_state:
|
15 |
st.session_state.run_button_clicked = False
|
16 |
|
@@ -31,19 +27,14 @@ with st.sidebar:
|
|
31 |
df, df_map = data.load_data()
|
32 |
st.sidebar.success('데이터 로드 완료')
|
33 |
|
34 |
-
st.title('Cell Off Recommendation System')
|
35 |
-
|
36 |
-
# 사용자 입력
|
37 |
date_input = st.date_input('날짜 선택:', st.session_state.date_input)
|
38 |
time_input = st.time_input('시간 선택:', st.session_state.time_input)
|
39 |
model_options = ['Rule-based', 'Kernel Model Based Reinforcement Learning']
|
40 |
selected_model = st.selectbox('모델 선택:', model_options, index=model_options.index(st.session_state.selected_model) if st.session_state.selected_model else 0)
|
41 |
|
42 |
-
# 주파수 선택
|
43 |
frequency_options = ['2100MHz', '2600MHz - 10', '2600MHz - 20']
|
44 |
frequency_input = st.selectbox('주파수 선택:', frequency_options, index=frequency_options.index(st.session_state.frequency_input))
|
45 |
|
46 |
-
# 입력이 변경되면 상태 초기화
|
47 |
if st.session_state.date_input != date_input:
|
48 |
st.session_state.run_button_clicked = False
|
49 |
st.session_state.date_input = date_input
|
@@ -60,11 +51,9 @@ if st.session_state.frequency_input != frequency_input:
|
|
60 |
st.session_state.run_button_clicked = False
|
61 |
st.session_state.frequency_input = frequency_input
|
62 |
|
63 |
-
# Run 버튼
|
64 |
run_button = st.button('Run')
|
65 |
|
66 |
def load_and_predict(model_name, df_map, timestamp_input, frequencies, progress_callback=None):
|
67 |
-
# 주파수 별 추천 셀 상태 초기화
|
68 |
recommended_cell_states = {freq: {} for freq in frequencies}
|
69 |
|
70 |
if progress_callback:
|
@@ -82,18 +71,15 @@ def load_and_predict(model_name, df_map, timestamp_input, frequencies, progress_
|
|
82 |
|
83 |
return recommended_cell_states
|
84 |
|
85 |
-
# 버튼이 클릭되면 세션 상태를 True로 설정
|
86 |
if run_button:
|
87 |
st.session_state.run_button_clicked = True
|
88 |
|
89 |
-
# 세션 상태를 활용하여 run_button_clicked가 True일 때 실행
|
90 |
if st.session_state.run_button_clicked:
|
91 |
|
92 |
progress_bar = st.sidebar.progress(0)
|
93 |
|
94 |
-
# 입력된 타임스탬프 처리
|
95 |
timestamp_input = datetime.combine(date_input, time_input)
|
96 |
-
frequencies_to_check = ['2100MHz', '2600MHz - 10', '2600MHz - 20']
|
97 |
recommended_cell_states = load_and_predict(
|
98 |
selected_model,
|
99 |
df_map,
|
@@ -120,7 +106,6 @@ if st.session_state.run_button_clicked:
|
|
120 |
|
121 |
st.markdown(f"##### **Cell**: {matching_enbid_pci}")
|
122 |
|
123 |
-
# 선택된 주파수의 상태 표시
|
124 |
for freq in frequencies_to_check:
|
125 |
status = recommended_cell_states[freq].get(matching_enbid_pci, 'Unknown')
|
126 |
color = '#D32F2F' if status == '0' else '#1976D2' # 빨간색 (OFF) / 파란색 (ON)
|
|
|
5 |
import map_recommend
|
6 |
import data
|
7 |
|
8 |
+
st.title('Recommendation System')
|
|
|
|
|
|
|
9 |
|
|
|
10 |
if 'run_button_clicked' not in st.session_state:
|
11 |
st.session_state.run_button_clicked = False
|
12 |
|
|
|
27 |
df, df_map = data.load_data()
|
28 |
st.sidebar.success('데이터 로드 완료')
|
29 |
|
|
|
|
|
|
|
30 |
date_input = st.date_input('날짜 선택:', st.session_state.date_input)
|
31 |
time_input = st.time_input('시간 선택:', st.session_state.time_input)
|
32 |
model_options = ['Rule-based', 'Kernel Model Based Reinforcement Learning']
|
33 |
selected_model = st.selectbox('모델 선택:', model_options, index=model_options.index(st.session_state.selected_model) if st.session_state.selected_model else 0)
|
34 |
|
|
|
35 |
frequency_options = ['2100MHz', '2600MHz - 10', '2600MHz - 20']
|
36 |
frequency_input = st.selectbox('주파수 선택:', frequency_options, index=frequency_options.index(st.session_state.frequency_input))
|
37 |
|
|
|
38 |
if st.session_state.date_input != date_input:
|
39 |
st.session_state.run_button_clicked = False
|
40 |
st.session_state.date_input = date_input
|
|
|
51 |
st.session_state.run_button_clicked = False
|
52 |
st.session_state.frequency_input = frequency_input
|
53 |
|
|
|
54 |
run_button = st.button('Run')
|
55 |
|
56 |
def load_and_predict(model_name, df_map, timestamp_input, frequencies, progress_callback=None):
|
|
|
57 |
recommended_cell_states = {freq: {} for freq in frequencies}
|
58 |
|
59 |
if progress_callback:
|
|
|
71 |
|
72 |
return recommended_cell_states
|
73 |
|
|
|
74 |
if run_button:
|
75 |
st.session_state.run_button_clicked = True
|
76 |
|
|
|
77 |
if st.session_state.run_button_clicked:
|
78 |
|
79 |
progress_bar = st.sidebar.progress(0)
|
80 |
|
|
|
81 |
timestamp_input = datetime.combine(date_input, time_input)
|
82 |
+
frequencies_to_check = ['2100MHz', '2600MHz - 10', '2600MHz - 20']
|
83 |
recommended_cell_states = load_and_predict(
|
84 |
selected_model,
|
85 |
df_map,
|
|
|
106 |
|
107 |
st.markdown(f"##### **Cell**: {matching_enbid_pci}")
|
108 |
|
|
|
109 |
for freq in frequencies_to_check:
|
110 |
status = recommended_cell_states[freq].get(matching_enbid_pci, 'Unknown')
|
111 |
color = '#D32F2F' if status == '0' else '#1976D2' # 빨간색 (OFF) / 파란색 (ON)
|