04.20 군집화 마무리 -> ux/ui관점 회의 -> streamlit 공부

2024. 4. 20. 20:57프로젝트/빵맛집 추천서비스 웹배포

 

01 문제 해결 과정


1. 군집화 과정에서 주성분 분석표를 바탕으로 행을 기준으로 컬럼의 특성을 파악할지, 열을 기준으로 컬럼의 특성을 파악할지에 대한 토론을 길게 했다. 나는 기준 1을 바탕으로 컬럼의 특성을 정하는 게 맞다는 입장이었다.

2. pca차원에서 랭킹 1, 2, 3을 정해 컬럼의 특성을 정하더라도 그 값이 pca를 잘 설명해줄 수 없다고 생각했다.

3. 다같이 회의를 통해 어떤 방향이 맞을지 고민을 했고, 기준 1로 컬럼의 특성을 정하기로 결정했다.

4. 군집 번호를 붙이는 라벨링 과정을 진행하니 다음은 ux관점에서 어떤 형태로 서비스를 제공할지 고민했다.

5. 그 다음 검색 알고리즘은 어떻게 구현해야할지에 대해서 2:2로 나눠 진행을 할 지 회의를 했다.

6. 내가 아침에 구상한 검색 알고리즘 시안이 있었고 제출한 다음 그것을 바탕으로 방법을 회의했다.

7. 나는 검색 알고리즘쪽이었으나 생각해보니 어차피 파이썬 코드를 작성하는 스트림릿 과정으로 다 통합될 거 같다는 의견을 냈다.

8. 모두 스트림릿에 대한 이해가 부족한 상황에서 진행하기는 어렵다는 판단을 했고, 일단 학습을 통해 이미지를 구체화 시키면서 튜터님께 도움을 요청하자고 결론을 냈고 디엠을 보낸 후 학습 중이다.

 

02 배포 서비스 시안


 

03 검색 알고리즘 시안


  1. 너의 위치를 검색해! (or 선택해, 입력해) 검색 박스를 제공한다.
    • 읍면동에 해당하는 빵집을 필터링한다.
  2. 어디 사는 친구를 만나고 싶어? [반경]을 클릭한다.
    • 반경 N(km)내에 위치한 빵집을 필터링한다.
  3. 사용자는 [맛있는 빵] 등을 N개 선택해 클릭한다. ← 원하는 필터를 여기서 끝낸다.
    • '맛있는 빵'에 대한 군집을 필터링한다.
  4. 군집에 대한 결과를 출력한다. 예를 들어, N번 군집에 해당 하는 빵집 8곳 출력한다.
  5. 사용자는 [N]번째 빵집을 클릭한다.
  6. 클릭한 추천 빵집에 대해 기본 정보를 출력한다.
  7. 다른 친구 보기 버튼을 통해 군집 내 다른 빵집을 출력한다.
  8. 결론: 선별된 가게 중 기준을 정해(랜덤/랭킹) 검색 서비스 창에 업로드 한다.
  9. 옵션: 맛있는 빵, 맛있는 음료, 좋은 뷰, 멋진 인테리어, 좋은 음악 등

 

04 Streamlit 실습 기록


1. 내가 배우고 싶은 구현 기능은 : 구글맵 삽입, 이미지 삽입, 메인 화면 만들기

 

2. with문의 사용


- with 문은 Python에서 컨텍스트 관리자(context manager)를 사용할 때에 사용한다. 컨텍스트 관리자는 리소스를 할당하고 해제하는 과정을 캡슐화하여 리소스 사용이 완료되면 자동으로 정리(clean-up)를 해주는 역할을 한다. with 문을 사용하면 코드가 더 간결해지고, 리소스를 사용한 후에 정확히 해제하는 것을 보장함으로써, 리소스 누수(resource leak)나 다른 오류를 방지할 수 있다.

- 예를 들어, 파일 작업을 할 때 파일을 열고 그 파일을 사용한 후에는 반드시 닫아야 한다. with를 사용하면 파일을 자동으로 닫아주기 때문에 개발자가 직접 파일을 닫는 것을 잊어버리는 실수를 방지할 수 있다.

 

with open('example.txt', 'r') as file:
    data = file.read()

 

- 이 시점에서 파일은 자동으로 닫힌다.


- with 문은 또한 Streamlit 코드에서 with 블록 안에 있는 스트리트릿(Streamlit)의 위젯과 명령어들이 특정 레이아웃 컨텍스트에 속하도록 할 때 사용된다. 위의 예제에서는 with right_column:을 사용하여 해당 블록의 코드가 right_column이라는 레이아웃 컨텍스트(여기서는 아마도 사이드바나 특정 칼럼) 안에서 실행되도록 한다. 이렇게 함으로써, st.radio와 st.write 위젯이 right_column에 배치되는 것을 보장한다.

 

with right_column:
    chosen = st.radio(
        'Sorting hat',
        ("Gryffindor", "Ravenclaw", "Hufflepuff", "Slytherin"))
    st.write(f"You are in {chosen} house!")

 

- 요약하자면, with 문은 리소스 관리와 코드 내 특정 실행 컨텍스트를 명확히 관리하는 데 유용하게 사용된다!

 

05 기타 인사이트


# 기타 차원은 기타로 명명해 주시되, 설명할 때 특징이 없는 빵집 즉 무난한 빵집이 되겠습니다. 모두 중간에 있어서 그런 것이니 너무 고민할 필요가 없겠습니다.