구름 X ict 전주 이노베이션 스퀘어의 강의에서는 백엔드(django)를 다루고 있습니다. 이걸 들어야 할지(?) 아직 감이 잘 오지 않아... 그냥 빅데이터 분석기사 실기 준비 하려고 합니다. 파이널 프로젝트도 진행 중이구요.
오랜만입니다.. ^-^
빅데이터 분석기사 실기 준비: 필답형
공분산: Covariance. 두 변수 간 상관관계를 나타내는 지표. 상관관계 경향성은 알 수 있으나 선형성 강도는 알지 못함 (양의 값이면 양의 상관관계, 음의 값이면 음의 상관관계. 두 변수가 독립인 경우 공분산은 0)
분산분석: ANOVA. 다수 집단 데이터에서 집단 간의 분산과 집단 내의 분산을 F분포로 계산해 가설검증 하는 것. 일원one-way, 이원two-way, 다변량multiple으로 나뉨.
왜도가 양인 경우 최중평(최빈값 < 중앙값 < 평균값), 왜도가 음인 경우 평중최(평균값 < 중앙값 < 최빈값)
과적합이면 high variance low bias, 과소적합이면 high bias low variance: variance와 bias는 trade-off 관계이기 때문
혼동행렬에서 True/False 여부는 예측과 실제가 같은지에 따라, Positive/Negative 여부는 긍정 예측인가 부정 예측인가에 따라 나뉜다. FN은 부정이라 예측했지만 실제로는 긍정인 경우, FP는 긍정이라 예측했지만 실제로는 부정인 경우.
F1-score는 2x((정밀도x재현율)/정밀도+재현율), 정밀도와 재현율의 조화평균. 정밀도는 '긍정으로 예측한 것 중 실제로도 긍정인 비율'(TP/(TP+FP)), 재현율은 '실제 긍정인 것 중 예측도 긍정이었던 비율'(TP/(TP+FN)). 계산식 나올수도 있다니 외워두자.
R-squared, 결정계수: 회귀모형이 실제 값을 얼마나 잘 반영하는지를 나타내는 비율. 1에 가까울수록 실제 값을 잘 반영한다고 판단. (*결정 계수는 상관 계수와는 달리 변수간 영향을 주는 정도 또는 인과 관계의 정도를 정량화 해서 나타낸 수치. 따라서, 결정 계수는 상관 관계 분석이 아닌 회귀 분석에서 사용함. 출처 https://m.blog.naver.com/istech7/50153288534)
ROC Curve: 가로축은 FP rate, 세로축은 TP rate로 두어 시각화하는 것. Area Under Curve score가 높을수록 좋다.
TCO: Total Cost of Ownership. 자산을 소유하고 있는 기간동안 소모되는 모든 연관비용.
(실기는 따로 구름 IDE에서 연습하고 있습니다)
제대로 api를 써 보는 경험이 처음이라 사전 조사를 어느정도 했음에도 불구하고 많이 헤맸습니다. 애초에 라이엇 api 자체가 게임 데이터를 불러오려면 (특정 티어 구간에 한한다는 가정 하에)특정 티어의 유저 데이터(닉네임 등)수집 -> 고유 id 수집 -> 게임 id 수집 -> 게임 데이터 수집 같은 느낌으로... 불러오고 불러오고 불러오다 보니 시간이 뚝딱 가버리더라구요.
2분에 최대 100개 데이터를 불러올 수 있는데, 하루 정도 기준으로 api key가 초기화되기 때문에 계속 갱신해주어야 합니다. 참고로 저는 '천상계(마스터, 그랜드마스터, 챌린저) 유저들의 최근 20 게임'을 바탕으로 분석하려 하는데, 전체 천상계 유저가 5천 명 정도 되고 그들의 최근 20게임 중에서 중복을 제거하면 약 6만 게임이 나옵니다.
천상계 유저 추출(티어별로 추출 후 병합)에 총 2시간, 고유id 수집에 1시간 30분, 게임id 추출에만 약 3시간이 걸렸고 게임 데이터 수집에는 5000개에 약 1시간 30분 정도 걸렸습니다. (빈 리스트나 빈 df에 +나 concat을 하지 않아 반복문 안에서 무한히 값이 초기화 되는 경험을 해 봤던 건 비밀입니다... 진도가 느린 건 이 때문이에요. 대단하다 최 수 민!) 사실상 하루에 피클파일 한 개 ~ 두 개 만든 게 전부인 것 같습니다ㅎ...
이런 상황이라 날짜에 맞게 유저와 게임을 갱신할 의지가 0에 수렴하게 되었습니다.. ^^ 수집 시점 기준 데이터로만 돌린다고 해도 6만 개를 다 돌리려면 (제가 확인 후 다시 돌려주는 과정까지 포함하면) 2~3일은 걸릴 것 같아 게임 id리스트 셔플 후 10000개만 뽑고 있는데, 과연 3~4시간 안에 다 뽑힐 지..
+) 어제 잠들기 전 코랩으로 전체 데이터를 돌리다 api가 만료되고 말았습니다..^^ (9시간 돌아갔는데도 완료되지 않았더라구요... 뭐 당연하죠...) 언제 코랩 런타임이 터질까 불안불안한 마음입니다.
위 까지가 11월 초의 이야기입니다. json형태의 데이터를 받아와 쓴 적이 몇 번 없어 데이터를 어떻게 다루어야 할 지 모른 채 제일 친숙한 pandas dataframe에 무작정 넣다보니 필요한 데이터를 찾기가 많이 어려웠습니다... 그래서 결국 json그대로 가져오는 방식을 택했습니다. 결과론적으로는, 일주일이 넘는 시간동안 "뻘짓"을 한 거죠! ^-^
게임 데이터를 나눠 저장하는 것 까진 좋았는데, 이번엔 파일 크기가 너무 큰 나머지 코랩이 파일을 저장하거나 불러올때마다 런타임이 터지는 사태가 발생했습니다. 이에 게임 id리스트에 있는 게임 10000개를 파일 하나당 게임 데이터 100개씩 json 파일 100개로 나눠 담았더니 아주 잘 되더라구요. 파일 병합은 차차 생각하도록 하고, 일단 파일 하나로 EDA부터 모델 생성까지 해봐야 할 것 같습니다. 갈 길이 아주 머네요...
수많은 과정들... 순서가 뒤죽박죽인 건 저조차도 아직 제대로 정리되지 않았기 때문입니다...
2주가 넘는 시간동안 별다른 성과가 없어 부끄러울 뿐이네요.
+)) 지금 json데이터에서 필요한 것들만 뽑아 df로 보려 하는데, 정말 재미있..습..니다..^-^
처음엔 이런 식으로 코드를 짰다가 이렇게 아무 소득도 얻지 못했습니다. 왜 안되는 건지 아직도 잘 모르겠어요... if문이나 else문을 따로 뽑아내면 잘만 되는데, for문으로 값을 뽑아내 df에 저장하려 하면 문제가 터져버립니다 @-@
play_df['position'] = play['info']['participants']
display(play_df)
for i in play_df['position']:
print(i['individualPosition'], i['teamPosition'], i['lane'])
그래서 앞에서 했던 것처럼.. df안에서 (로우들을) 반복문 돌려 원하는 값들을 빼냈습니다.
이렇게 하지 않고서는 원하는 값을 얻어낼 수는 없는 건지... pandas 좀 다룰 줄 안다고 생각했는데, 이중 삼중 dict로 이루어진 json파일 앞에서는 맥없이 무너져버리고 마네요.. ^^ 재밌네요 재밌어. 하하.
나름 잘 가공해서 다음주에는 EDA랑 모델링 결과까지 들고 와 보겠습니다.
'STUDY' 카테고리의 다른 글
취준로그 ver0.1 (0) | 2023.01.17 |
---|---|
파이썬 스터디 ver3. 17주차 (2) | 2022.11.23 |
파이썬 스터디 ver3. 15주차 (2) | 2022.10.29 |
파이썬 스터디 ver3. 14주차 (3) | 2022.10.22 |
파이썬 스터디 ver3. 13주차 (0) | 2022.10.19 |