3차 미니프로젝트는 이때까지 배운 내용을 모두 사용하는 시간을 가졌던 것 같다. 데이터 분석 및 전처리, 머신러닝, 딥러닝 모두 해볼 수 있는 시간을 가졌다.
그리고 3일차엔 kaggle 대회를 오픈하여 혼자서 빈 ipynb에 직접 써가면서 경험할 수 있어서 좋았다.
이번 미니프로젝트에서는 스마트폰 센서 데이터 기반으로 모션을 분류하고 모델링을 통해 성능을 평가하는 프로젝트를 진행했습니다.
주어지는 데이터는 train데이터, test데이터, feature데이터(이름을 계층구조로 정리한 데이터)를 활용하여 모델을 만들었다.
프로젝트를 진행하면서 전처리에서 시간을 좀 많이 사용함
전처리를 조금 더 생각하면서 할 수 있게 하자
value_counts()
# 변수 값 확인
data['변수명'].value_counts()
model.feature_importances_
sensor별 중요도 시각화
result.groupby('sensor')[['feature_importance']].sum().sort_values('feature_importance').plot.barh(figsize=(20,10))
6개의 행동을 구분
동적 / 정적 구분
6개 각각 하나씩 구분
여러 관점에서 변수 중요도를 뽑았음
RandomForestClassifier를 사용하여 모델링을 하여 변수 중요도 확인
RandomForestClassifier, XGBClassifier, LogisticRegression 3가지를 통해 머신러닝을 진행
각각 0.99, 1.00, 0.98 성능을 가짐
여기까지 1일차에 진행했고 따로 제출은 안함
2일차에는 1일차때 사용한 데이터를 활용하여 딥러닝을 해보는 시간을 가졌다.
6개의 행동을 정적/동적으로 분류하여 이진분류 모델을 만들었다. sigmoid 사용
그리고 정적 동적 세부 분류를 하여 6가지로 다중 분류 모델을 만들었다. softmax 사용
3일차엔 kaggle 대회를 열어 개별로 성능이 가장 좋은 모델을 추출하는 시간을 가졌다.
데이터
timestamp - 측정 시간
A_x - 신체부위 'A'에 부착된 센서의 x축 데이터
A_y - 신체부위 'A'에 부착된 센서의 y축 데이터
A_z - 신체부위 'A'에 부착된 센서의 z축 데이터
B_x - 신체부위 'B'에 부착된 센서의 x축 데이터
B_y - 신체부위 'B'에 부착된 센서의 y축 데이터
B_z - 신체부위 'B'에 부착된 센서의 z축 데이터
label - 라벨값(1~11)
라벨 설명
- 1: 걷기
- 2: 뛰기
- 3: 천천히 걷기
- 4: 계단 오르기
- 5: 계단 내려가기
- 6: 서있기
- 7: 앉아있기
- 8: 누워있기
- 9: 자전거 타기
- 10: 서서 자전거 타기
- 11: 자전거에 앉아있기
이 데이터를 활용하여 성능이 좋은 모델을 만들어 전국의 AI반 끼리 대회를 개최했다.
데이터를 분석하면서 timestamp 변수가 측정시간으로 인식하여 분단위로 바꿔서 모델링을 진행했다.
모델링을 진행할때 3일차도 마찬가지로 train, test 데이터를 따로 받아서 예측할땐 test데이터를 활용하여야 한다. 이 부분에서 헷갈려서 마지막 제출에 좀 문제가 있었다...ㅠㅠ