일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jd
- 시각화
- If
- streamlit
- 최종 프로젝트
- 기초프로젝트
- Python
- 데이터분석
- 머신러닝
- cross join
- 프롬프트 엔지니어링
- lambda
- 클러스터링
- 프로젝트
- data analyst
- da
- pandas
- 데이터 분석
- 서브쿼리
- SQL
- SQLD
- 히트맵
- 태블로
- 군집화
- 기초통계
- 크롤링
- 전처리
- GA4
- 팀프로젝트
- Chat GPT
- Today
- Total
세조목
최종 프로젝트 23일차(24.04.20) 본문
최종 프로젝트 23일차입니다.
발표 자료 제출이 다음주 금요일이어서 시간이 부족한 관계로
주말인 오늘도 팀원들과 만나 클러스터링 분석 및 회의를 진행했습니다.
클러스터링
어제 포스팅에서 저희는 6군집 6차원으로 클러스터링 분석을 진행했다고 말씀드렸습니다.
2024.04.19 - [데이터 분석 공부/프로젝트] - 최종 프로젝트 22일차(24.04.19)
이제 축소한 각 차원과 군집이 어떠한 특성을 가지고 있는지 정체성을 확인하는 작업을 진행해야했습니다.
예를 들어 위 Radar plot에서의 경우 0번 군집은 pc1에 가장 많이 쏠려있는데
0번 군집이 어떤 특성을 가지고 있는지 알려면
pc1이라는 차원이 어떤 특성을 가지고 있는지를 우선적으로 확인해야합니다.
그래서 저희는 주성분(PC)에 대한 변수들의 기여도를 확인하는 방식으로 차원의 특성을 정의했습니다.
# 각 주성분에 대한 변수들의 기여도 확인
pca_com = pca.components_
pca_comdf = pd.DataFrame(pca_com, columns = df_anal.columns, index=[f'pca{idx+1}' for idx in range(pca_com.shape[0])])
# pca_comdf의 행열을 전환
feature_pca = pca_comdf.transpose().sort_values('pca6', ascending=False)
이 데이터를 엑셀로 옮겨서 작업을 진행했습니다.
두 가지 측면에서 차원의 특성을 정의했는데요,
첫 번째 방식은 각 차원(PC)마다 특성(행)이 어느정도 반영이 되었나를 보고 가장 많이 반영된 차원의 특성을
해당 차원의 주요 특성으로 보는 방법입니다.
위 이미지를 예시로 들자면 atmosphere 특성의 경우 pc1~pc6 중에서 pc4에서 가장 많은 영향을 미쳤기 때문에
pca4의 주된 특성이 atmosphere라고 보는 것입니다.
두 번째 방식은 열 단위로 확인하는 것입니다.
각 차원별로 특성값을 내림차순 정렬해서 상위 3개의 특성이 이 차원의 주된 특성이라고 보는 것이죠.
위 이미지를 보면 pc1의 경우 view, good_music, special_menu 순서로 차원에 영향을 미치고 있습니다.
이 때 최소 0은 넘어야지 유의미한 영향을 미치는 것으로 판단해서
양수값들을 우선적으로 추렸고 그 중에서도 각 특성간 값의 차이가 큰 경우에는 앞 순위만을 남기기로 했습니다.
(그렇지 않은 경우에는 두 특성 모두를 반영하기로 했습니다.)
두 가지 방식 중에 어떤 방식을 채택할 것이냐를 놓고 팀원들과 많은 이야기를 나눴습니다.
사실 저의 경우 첫 번째 방식으로 보는 것이 맞나하는 의문이 계속 들었습니다.
차원 내에서 특성간의 영향력을 비교하는 것이 맞지 다른 차원 간에 비교하는 것은 비교 자체가 되지 않을 것 같았기 때문입니다. 저 외에 다른 팀원들은 첫 번째 방식으로 진행했을 때가 더 각 차원의 특성을 명확하게 설명할 수 있고,
차원 간 비교가 문제되지 않는다고 생각했기 때문에 일단은 해당 방식으로 진행하기로 했습니다.
그럼에도 불구하고 아직까지 저의 궁금증은 해소되지 않았기 때문에 관련해서는 월요일에 튜터님께 질문드려볼 예정입니다.
UX 및 향후 방향성에 대한 회의
클러스터링에 대한 얘기가 마무리된 후에는 UX 및 향후 방향성에 대해서 얘기 나눴습니다.
UX와 UI에 대해서 이야기 나눈 내용을 바탕으로 위와같이 간단하게 정리했습니다.
일단 저희의 목표는 Python streamlit 라이브러리를 활용해서 위와 같이 구현하는 것입니다.
팀원 네 명 모두 streamlit을 활용한 검색 알고리즘 구현을 해본적이 없어서
'과연 우리가 할 수 있을까?' 하는 의문이 들긴했지만
크롤링도 그렇고 클러스터링도 그렇고 다 이번 프로젝트를 진행하면서 처음 해본 것들이었기에
streamlit을 활용한 검색 알고리즘 구현 역시도 잘 할 수 있을 것이라고 생각했습니다.
하지만 어디서부터 어떻게 시작해야 할 지에 대해서 가닥이 잡히지 않는 건 사실이기에
내일 튜터님 한 분께 관련해서 질문을 드려보려고합니다.
만약 튜터님께서 시간이 안 되신다고하신다면 저희가 아는 것만을 가지고서라도 일단 작업 진행하려고합니다.
시간이 정말 얼마 남지 않았으니까요.
'데이터 분석 공부 > 프로젝트' 카테고리의 다른 글
최종 프로젝트 25일차(24.04.22) (0) | 2024.04.22 |
---|---|
최종 프로젝트 24일차(24.04.21) (3) | 2024.04.21 |
최종 프로젝트 22일차(24.04.19) (0) | 2024.04.19 |
최종 프로젝트 21일차(24.04.18) (1) | 2024.04.18 |
최종 프로젝트 20일차(24.04.17) (0) | 2024.04.17 |