04.22 클러스터링 재회의, 스트림릿 버튼구현

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

 

01 클러스터링 군집화 시각화 다음 과정은?


# 해석할때는 스케일링을 푼다.
- 숫자의 의미가 큰 것들은 스케일링을 푼다. 영 안되겠으면 다시 돌아오기도 한다.

# 각 클러스터별로 박스플롯을 그린다.
- 리뷰 하나하나를 평균으로 내버리면 손실되는 데이터가 존재하니까.
- 박스 플롯은 한눈에 보기 어려우니까 시간만 있으면 다양하게 보는게 좋다.
- 박스플롯 먼저 보고 라인차트도 보며 같이 고민해본다. (튜터님마다 다름)

# 리뷰수 같은 경우는 로그를 씌우는 것도 좋겠다.
- 0 아니면 10000 같은 경우는 로그를 씌워서 스케일링을 한다.
- 컬럼별로 스케일링을 할 수 있는 것처럼, 로그 얹어서 스켈링 한다.
- 데이터가 너무 치우쳐 있으면 이 컬럼이 내가 중요한거 보다 로그를 먼저 취하긴 한다.
- 데이터가 몰린 애들도 로그를 씌운다.
- 리뷰수 같은 경우에는 리뷰수에만 로그를 씌운다.

# 데이터 특성상 '0'이 많아서 저렇게 무난무난 군집에 7000개가 몰릴 수 있다.
- 군집을 더 나눠도 보고 시도해본다. 그래도 여기에 몰려있다면
- 무난한 빵집은 몇 십프로였다. 라고 결론을 낼 수 있다.
- 이부분은 어떤 모델을 만들고자 하는지에 따라 다를 수 있다.
- 추천을 받지 못하는 군집이 될 것이다.

 

평균(9컬럼)
중앙값(9컬럼)
합계(9컬럼)

 

02 스트림릿 웹페이지 구현


 

03 streamlit 튜터님 피드백


# 스트림릿 튜터님
- 2번째 페이지에서 유저가 선택한 티커 기준으로 맵, 그리고 지도 내 원 자동 업데이트 하게 만들었어요.
- 이제 하셔야 할 내용은 2번째 페이지 안에서 실행하는 filtering_dataset() 라는 함수에서 해당 범위의 가게들을 추리는 코드, 3번째 페이지부터 하고자 하셨던 버튼 만들어서 후속 진행 하시면 될거 같습니다.
- 그 외에 전체적으로 코드 가독성 좋게 아키텍처좀 수정했어요 그런 부분도 내일 설명 드리도록 하겠습니다!

# 튜터님 스트림릿 코드, 팀원분 코드 모두 주피터 노트북에 있음!

 

# 오늘 저녁시간 피드백 (구글지도 활용 방법)

- 스트림릿: 가게 이름과 가게 좌표만 얻을 수 있다.
- last_object_clicked에 가게가 들어간다.
- 경도, 위도 좌표로 중심점을 찍은 다음, 함수를 하나 만들어서
- 반지름을 가지고 반지름 이하인 애들만 뒤로 보내주면 된다.

# 배포하려면 데이터셋 크기에 따라 다르다. 크기가 크면 복잡해진다.
- 오백메가? 이하면 통으로 깃허브에 올릴 수 있다.

 

04 game 도메인의 튜터님 피드백


# 개별 질문

- 군집화는 라인차트로 표현했을 때, 특성을 파악할 수 있다.
- 만약 2차원으로 확인을 한다면, 파이차트가 아니라 선 그래프다.

 

# 팀원 질문

- 기준2 즉, 차원별 주성분값 랭킹1,2,3으로 차원의 특성을 정하는건 현업에서 하지 않는 일이다.

# 라인 차트를 해석하자면?
- 점수 높낮이가 중요하긴 한데 다른 군집과 어디서 차이가 있냐가 제일 중요하다.
- 정답이 없고 주관이 들어가게 되는게 맞다.

# 군집화에 어려움을 겪는 중
- 추천할 수 없는 가게의 경우, 로우 데이터를 본다.
- 로우 데이터를 붙였을 때 리뷰 하나하나를 다 본다!
- 직접 판단해야 한다.
- 빵을 최저로 찍었는데도 오히려 평균일 수 있다. (헉)
- 경험상 평균이라서 특징이 없거나, 진짜 안좋거나인데 보통 평균인 경우였음.
- 보통은 컬럼수가 군집수보다 많다. 보통은 그래. (우린 축소를 해버렸지만)
- 우리 그래프 행열 전환해서 봐야한다. x군집/y차원 아니고 x차원 y군집이다.
- 여기서 다른 친구들과 다른 경우를 본다. (음양수 상관없이 꼭짓점을 본다!!, 유달리 튀는 것.)
- 보통 x컬럼, y차원축소값을 라인 그래프로 보지 않으시는 것 같다.
- 무난한 군집은 항상 있다. 고만 고만한 군집은 항상 있다.
- 선그래프는 꼭짓점으로 보고 '해석'을 할 때에는 양/음을 생각해서 네이밍한다.