[ML] LDA을 활용한 분류 문제
Week#7 / Reference: Prof.Choi / based on Colab, Kaggle
Overview
원자력발전소 상태 판단
본 문제는 주어진 데이터를 이용하여 원자력발전소의 상태를 예측하는 문제이며, 세종대학교 최유경 교수님의 원자력발전소 상태 판단 kaggle competition를 출처로 둔다.
Description
-
Data
본 competition에서는 한국수력원자력(주)에서 제공받은 원자력 발전소 모사 데이터가 제공된다. 주어진 데이터 내에서 발전소의 상태가 변하며 변하기 전 발전소 상태를 상태 A, 변한 후 상태를 상태 B_라고 할 때 데이터를 기반으로 상태 _B_를 판단하는 것이 대회의 목적이다. 모든 데이터는 같은 상태 (상태 _A)에서 시작한다.
데이터는 0초에서 15초 사이에 상태가 변하기 시작하며, 모든 데이터가 숫자로 이루어져 있다. train 데이터로는 약 10분 데이터가 주어지며 test 데이터로는 1분 간 데이터가 주어진다. 즉, 1분 데이터만 사용하여 평가한다.
훈련데이터와 학습데이터는 모두 원할한 실습 진행을 위해서 256으로 차원 축소되었다.
-
File
-
pca_train.csv(9.81GB) : 훈련 데이터가 포함된 csv 파일
-
pca_test.csv(879MB) : 테스트 데이터가 포함된 csv 파일
train과 test의 id는 중복되지 않는다.
- train_label.csv(6.78KB) : 훈련데이터의 id (파일 이름)에 해당되는 상태_B를 정리한 파일
- sample_submission.csv(283KB) : 제출 형식과 동일한 샘플 데이터
-
Preparation
-
kaggle install
1
2
3!pip uninstall -y kaggle !pip install --upgrade pip !pip install kaggle==1.5.6
-
API token upload
1
2
3!mkdir -p ~/.kaggle !cp kaggle.json ~/.kaggle/ !chmod 600 ~/.kaggle/kaggle.json
-
Import libraries
1
2import numpy as np import pandas as pd
Data Loading
Competition의 Data 탭에서 필요한 데이터를 가져온다.
-
Import dataset from Kaggle
1
2!kaggle competitions download -c 2021-ml-p5 !unzip 2021-ml-p5.zip
-
Input data
1
2
3
4
5
6train = pd.read_csv('pca_train.csv') label = pd.read_csv('train_label.csv') test = pd.read_csv('pca_test.csv') X = train y = label.drop('id', axis = 1)
Data Modeling
-
Fitting
다양한 parameters를 조절해 봤지만, tol 값을 조절했을 때 성능이 가장 잘 나왔다.
여기서
tol
이란 수렴 허용 오차를 뜻한다.solver='svd'
인 경우만 사용되며, default value는 1.0e-4, 즉 0.0001이다.1
2
3
4from sklearn.discriminant_analysis import LinearDiscriminantAnalysis lda = LinearDiscriminantAnalysis(tol=0.008) lda.fit(X, y) pred = lda.predict(test)
-
Submission
1
2submit = pd.read_csv('sample_submission.csv') submit['label'] = pred
1
submit.to_csv('submit.csv',index=False)
1
!kaggle competitions submit -c 2021-ml-p5 -f submit.csv -m "Message"
Result
parameters를 적절히 조절하는 것에는 특정한 공식이 있는 것도 아니고, 이것 참. 추후 Grid Search를 공부하면 조금 수월하겠지만 아직까지는 실험적인 시도가 어느 정도 필요한 법이다.