안녕하세요 와우멍입니다.
오늘은 빅데이터분석기사 실기 1회같은 2회 시험 후기를 작성하겠습니다.
(빅데이터분석기사 1회는 코로나로 인해 취소)
으허허허 시험이 끝났습니다. 오랜만에 잠시 숨돌리는 틈이라 늦잠도 자고 낮잠도 자고 행벅하네여.
또 다음 시험을 준비하기 전까지, 기분 좋게 후기를 호다닥 정리해보겠습니다.
거두절미하고 가시죠.
단답형 - 27점/30점 예상
빅분기 필기 공부할 때 괴로웠던 부분들(실제 코딩과 크게 상관없는)은 안나오고 전처리/ 모델링/ 평가 부분에서만 문제가 나왔습니다. 사실 코딩 부분도 준비가 미흡하다 생각해서 따로 복습할 시간이 부족했는데, 우연히 발견한 아래 이 어플이 큰 도움이 되었습니다. 자기전 5분 + 이동시간에 간간히 이거 풀다보니 '후진제거' '평균대치' '부스팅 vs 배깅' 포함해서 하도 안봐서 잊고있던 단어들 떠올릴 수 있었습니다. 짜투리시간 활용으로 이 어플 추천드립니당 (혹시나해서 말씀드리는거지만 제꺼는 물론이거니와 관련자도 아닙니당)
https://play.google.com/store/apps/details?id=com.ds.datamanimapp
1 | 이상값 | O |
2 | 평균대치법 | O |
3 | 비지도학습 | O |
4 | 부스팅 | O |
5 | 하이퍼파라미터 | O |
6 | Gradient boost | O |
7 | 과적합 | O |
9 | 후진제거법 | O |
10 | roc | O |
작업형 제1유형 - 20~30점 / 30점 예상
나름 기억을 떠올리면서 코드를 적어봤지만, 기억에 의존해서 적은거니 정확한 것은 아니니 참고로만 봐주세요! 분명 문제풀 때는 pandas 함수보다는 numpy 함수를 많이 썼던 것 같은데, 더듬더듬 다시 만들어보니까
1. 컬럼1에서 상위 10개 값들을 상위 10번째 값으로 대체한 후, 컬럼2가 80이상인 데이터에 대한 컬럼1의 평균값 계산: 5.75
1
2
3
4
5
|
import pandas as pd
a = pd.read_csv('data/데이터.csv')
a['컬럼1'].sort()[-10:] = a['컬럼1'].sort()[-10]
answer = a['컬럼1'][a['컬럼2']>=80].mean()
|
cs |
4 Line: sort( )함수를 적용하면 오름차순으로 정리가 되기 때문에 뒷행으로 갈수록 큰값입니다. 즉, 가장 큰 마지막 10개 행의 값 [-10:]을 10번째로 큰 값 [-10]으로 대체
5 Line: '컬럼2'가 80이상인 부분의 '컬럼1'의 값들을 찾아서 mean값을 answer로 저장
2. 데이터 전체에서 80% 추출 후 결측치들을 median으로 채우고 표준편차의 변화값: 1.975
1
2
3
4
5
6
7
|
import pandas as pd
a = pd.read_csv('data/데이터.csv')
a = a[:len(a)*0.8]
prev_std = a['컬럼'].std()
aft_std = a['컬럼'].fillna(a['컬럼'].median()).std()
answer = abs(aft_std - prev_std)
|
cs |
4 Line: 데이터 중 80%만을 slicing
5 Line: 현 상태에서의 '컬럼'열의 표준편차를 계산 후 저장
6 Line: '컬럼'열의 결측치들을 median값으로 대체한 후, 표준편차를 계산 후 저장
7 Line: 결측치 대체 전과 후의 표준편차 차이를 저장
3. Outlier 추출 후 합계: 31707
1
2
3
4
5
6
7
|
import pandas as pd
a = pd.read_csv('data/데이터.csv')
dum = a.descibe()
cut_high = dum['50%'] + 1.5*(dum['75%']-dum['25%'])
cut_low = dum['50%'] - 1.5*(dum['75%']-dum['25%'])
answer = a['컬럼'][(a['컬럼'] < cut_low)|(a['컬럼'] > cut_high)].sum()
|
cs |
4 Line: 저는 quantile( )함수를 쓰는 것보다, 평균/표준편차/사분위수 등을 한번에 뱉어주는 그냥 describe( ) 함수를 선호합니다.
5~6 Line: 이상치의 하한값/상한값을 계산
***2021.12.21 수정: 차형준님 지적 감사합니다 IQR이용할때는 75th percentile + 1.5*IQR이 상한선, 25th percentile - 1.5*IQR이 하한선입니다! cut_high = dum['75%'] + 1.5*(dum['75%']-dum['25%']) cut_low = dum['25%'] - 1.5*(dum['75%']-dum['25%']) |
7 Line: 하한값보다 작거나 상한값보다 큰 값들의 합을 계산 후 저장
작업형 제2유형 - 최소 10점 이상
예상(혹은 기도)했던 대로 회귀/분류 문제가 나왔습니다. 예제와 거의 같다고 할 수 있는 분류문제였습니다.
데이터셋은 아래 캐글의 E-Commerce Shipping Data에다가 정시 배송 여부를 0/1로 추가해놔서 train set을 구성해놨었습니다. 최종적으로는 test set에 대해서 제때 도착했는지를 확률로 뱉어서 제출하는 문제였어요.
https://www.kaggle.com/prachi13/customer-analytics
train set을 쪼개서 우선 모델을 세우고 검증 결과를 확인해봤습니다.
SVM과 XGBoost를 이용해서 roc-auc score를 확인하며 전처리를 다시했습니다.
나중에 다시 추가하겠습니다.
단답형과 제1유형을 다풀고 넘어온 시간이 1시간이 채 안됐을 때라, 마음 편하게 시작했는데.. 데이터 보니 손볼 부분이 많더라구요.. 그리고 이것저것 테스트하는 과정에서 이전에 포스팅한대로 R코드 작성하는 부분에 메모를 옮겨놨었는데ㅠㅠ 이게 다른 페이지 갔다오면 초기화가 되면서 날아가는 바람에... 의욕이 확 꺽였었습니다.. ㅋㅋㅋㅋ 되도록 그냥 메모장을 이용하는 것으로 추천드립니당.
그럼 다음에는 빅데이터분석기사 필기와 정처기 후기도 한 번 준비해보겠습니다.
모두 수고하셨습니다.!! 혹시 다음 차수 공부를 위해서 오신 분들이라면 화이팅이구요!!
'Hobby > Hobby_4 - Coding' 카테고리의 다른 글
[자격증] 빅분기 실기 - 8. 빅분기 합격 후기 (8) | 2021.09.01 |
---|---|
[자격증] 빅분기 실기 - 5. 현실적인 합격 전략, 단답형과 제1유형 (0) | 2021.06.18 |
[자격증] 빅분기 실기 - 6. 실습환경 마지막 연습(D-1) (0) | 2021.06.18 |
[자격증] 빅분기 실기 - 4. 빅분기 실기 환경 꿀팁 (0) | 2021.06.16 |
[자격증] 빅분기 실기 - 3. 분석과정 정리 및 타이타닉 생존 확률 예제 (2) | 2021.06.15 |
댓글