6주차 3차 미니프로젝트

정지원·2024년 3월 30일
0

에이블 스쿨 복습

목록 보기
28/51
post-thumbnail

3차 미니프로젝트는 이때까지 배운 내용을 모두 사용하는 시간을 가졌던 것 같다. 데이터 분석 및 전처리, 머신러닝, 딥러닝 모두 해볼 수 있는 시간을 가졌다.
그리고 3일차엔 kaggle 대회를 오픈하여 혼자서 빈 ipynb에 직접 써가면서 경험할 수 있어서 좋았다.

1일차, 2일차

이번 미니프로젝트에서는 스마트폰 센서 데이터 기반으로 모션을 분류하고 모델링을 통해 성능을 평가하는 프로젝트를 진행했습니다.

주어지는 데이터는 train데이터, test데이터, feature데이터(이름을 계층구조로 정리한 데이터)를 활용하여 모델을 만들었다.

  • 수업에서는 data파일 한개만 받아서 내부에서 x,y 나누고 train, test 데이터를 나눠서 모델링을 진행했다.
  • 하지만 이번에는 train으로 학습(fit) 시킨 후 , 예측시(predict) test 데이터를 사용하여야 한다.
  • 이 부분을 이해하지 못해서 처음에 많은 시간을 사용했다.
  • 3일차 캐글에서도 좀 힘들었다.

데이터 전처리

프로젝트를 진행하면서 전처리에서 시간을 좀 많이 사용함
전처리를 조금 더 생각하면서 할 수 있게 하자

변수 값 확인

value_counts()

# 변수 값 확인
data['변수명'].value_counts() 

변수 중요도

model.feature_importances_

groupby

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일차때 사용한 데이터를 활용하여 딥러닝을 해보는 시간을 가졌다.

  1. 6개의 행동을 정적/동적으로 분류하여 이진분류 모델을 만들었다. sigmoid 사용

  2. 그리고 정적 동적 세부 분류를 하여 6가지로 다중 분류 모델을 만들었다. softmax 사용

3일차 (kaggle)

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데이터를 활용하여야 한다. 이 부분에서 헷갈려서 마지막 제출에 좀 문제가 있었다...ㅠㅠ

profile
뒤늦게 프로그래밍을 시작한 응애

0개의 댓글