from google.colab import drive
drive.mount('/content/drive')

# .kaggleというフォルダをColab上に作成
!mkdir -p ~/.kaggle

# .kaggelフォルダにコピーし、権限を変更
!cp /content/drive/'My Drive'/Kaggle/kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json

!ls /root/.kaggle

!pip install kaggle

!kaggle competitions list

!kaggle competitions download -c reducing-commercial-aviation-fatalities

!ls | grep .zip | xargs -I{} unzip {}

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

pd.options.display.max_rows = 999
pd.options.display.max_columns = 999

train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")

train.info()

"""
Explanation: <a href="https://colab.research.google.com/github/kousukekikuchi1984/kaggle/blob/master/reducing_commercial_aviation_fatalities.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>
End of explanation
"""


train[(train["crew"] == 1) & (train["seat"] == 0)].describe()

"""
Explanation: やること

下記のデータセットから、パイロットの状態を推測する。
SS, CA, DAへの多項分類問題
評価はMulti-Class Log Lossで評価される。
センサーによるノイズが多いので、それを自動的に処理する必要がある。

crew

確かクルーの組み合わせで決めている数字らしい

experiment

experiment - One of CA, DA, SS or LOFT. The first 3 comprise the training set. The latter the test set.
CAは集中できている状態
DAは集中が阻害されている状態
SSは驚きがある状態

seat

pilotが左の席に座っているか、右の席に座っているかを示す
多分、機長と副操縦士のことをカテゴリわけしている。

eeg*

electroencephalogram、脳波を示す

ecg

3-point Electrocardiogram signal. The sensor had a resolution/bit of .012215 µV and a range of -100mV to +100mV. The data are provided in microvolts.
心電図の波形らしい

r

Respiration, a measure of the rise and fall of the chest. The sensor had a resolution/bit of .2384186 µV and a range of -2.0V to +2.0V. The data are provided in microvolts.
呼吸を示すセンサーで、microvoltsで単位が表されている

gsr

Galvanic Skin Response, a measure of electrodermal activity. The sensor had a resolution/bit of .2384186 µV and a range of -2.0V to +2.0V. The data are provided in microvolts.
皮膚電気反応、ストレスがかかった時に電位が変化することを利用している。

event

A = baseline, B = SS, C = CA, D = DA
End of explanation
"""


train.head()

from scipy import signal

b, a = signal.buffer(8, 0.05)
y = signal.filtfilt(b, a, subset['r'], padlen=150)
plt.plot(y[3000:4024])


"""
Explanation: 基本的な戦略
パイロット別に考える

基本的に人間のセンサーデータは個体差が大きいので、ノイズ処理は全体ではなく個体で考える。
異常値は前後の平均値で穴埋めを行うなど
パイロット別に行うためには、

シグナル

正規分布に従っているのかどうかが疑問。従っていそうな気がするが

一旦の方向性

どのカラムとevent のクラスが影響があるのかを知りたい。
End of explanation
"""


