반응형
블로그 카테고리 용도
🔎 매주 KT 에이블 스쿨에서 배운 내용을 복기하기 위해
✨ 11주차 소감
- 피쳐가 많다면 줄일 수 있는 방법을 찾아보자
미니프로젝트 5차
📌 스마트폰 센서 데이터 기반 모션 분류
받은 데이터 : X축,Y축,Z축 신호에 대한 가속도,각속도등 250가지 이상의 feature를 가진 데이터
(매우 좋은 데이터로 전처리 방법, 모델에 상관없이 정확도가 99%가 나옴)
⚠️ 문제 정의 : 모델예측하는데 쓰이는 feature가 너무 많음. 과도한 시간과 노력을 들일 만큼 모든 feature가
모델 예측에 유의미한 데이터로 적용되는가? 그렇지 않다면 feature를 줄여서 비용을 아껴보자
🔎 사용 방법 :
1, 변수 중요도 기반으로 상위 n개의 데이터를 추출(Permutation Importance)
코드 구현 :
# 상위 몇개의 데이터로 xgb 평가
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# 중요도가 높은 피쳐부터 몇개까지 피쳐를 설정해야 auc가 제일 높은가?
max_accuracy = 0
idx = 0
for k in range(1,250):
X_new = np.array([x[temp['feature'][i]] for i in range(k)]) # k값에 따라 모델 정확도가 달라짐짐
X_new = X_new.T
# 데이터 분리하기
X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42)
y_train = y_train.astype(int)
y_test = y_test.astype(int)
# 모델 정의하기
model = XGBClassifier()
# 모델 학습하기
model.fit(X_train, y_train)
# 모델 예측하기
y_pred = model.predict(X_test)
# 모델 성능 평가하기
accuracy = accuracy_score(y_test, y_pred)
if accuracy > max_accuracy:
max_accuracy = accuracy
idx = k
print(f'모델 정확도: {max_accuracy}',"정확도가 최대 일때 상위 피쳐개수 :",idx)
# 모델 정확도: 0.9957519116397621 정확도가 최대 일때 상위 피쳐개수 : 121
permutation importance를 통해 얻은 피쳐 중요도에 대한 리스트를 데이터 프레임으로 만들어
for문을 통해 중요도가 높은 상위 n개까지의 데이터만 추출해서 정확도를 구했습니다.
실제로 250개의 데이터를 모두 사용하는 것보다 상위 121개의 데이터만 사용한 것이 acc가 더 높은 것으로 확인이 되었습니다.
반응형
'KT-AIVLE' 카테고리의 다른 글
[KT-AIVLE 끝 AI트랙] 잡페어 및 에이블 스쿨 수료 (2) | 2023.07.21 |
---|---|
[KT-AIVLE 17주차 AI Track] 미니 프로젝트 7차(Web) (0) | 2023.05.30 |
[KT-AIVLE 10주차 AI Track] 미니프로젝트 4차 (NLP) (0) | 2023.04.24 |
[KT-AIVLE 8주차 AI Track] 미니프로젝트 3차 (CNN) (1) | 2023.03.27 |
[KT-AIVLE 7주차 AI Track] CNN 시각지능 딥러닝 (0) | 2023.03.20 |