分類と特徴量エンジニアリング

Pythonで学ぶMachine Learningによる時系列データ解析

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

モデル適合前に必ず生データを可視化する

Pythonで学ぶMachine Learningによる時系列データ解析

時系列データを可視化しましょう!

ixs = np.arange(audio.shape[-1])
time = ixs / sfreq
fig, ax = plt.subplots()
ax.plot(time, audio)

Pythonで学ぶMachine Learningによる時系列データ解析

どの特徴量を使うか?

  • 生の時系列データは分類にはノイズが多すぎます
  • 特徴量を計算する必要があります!
  • まずはオーディオデータを統計的に要約してみましょう
Pythonで学ぶMachine Learningによる時系列データ解析

Pythonで学ぶMachine Learningによる時系列データ解析

複数の特徴量を計算する

print(audio.shape)
# (n_files, time)
(20, 7000) 
means = np.mean(audio, axis=-1)
maxs = np.max(audio, axis=-1)
stds = np.std(audio, axis=-1)

print(means.shape)
# (n_files,)
(20,) 
Pythonで学ぶMachine Learningによる時系列データ解析

scikit-learnで分類器を学習する

  • 2次元データセット(サンプル×時間)を1次元の特徴量に集約しました
  • 各特徴量を組み合わせ、モデルの入力として使用できます
  • サンプルにラベルがあれば、scikit-learnで分類器を作成・学習できます
Pythonで学ぶMachine Learningによる時系列データ解析

scikit-learn用に特徴量を準備する

# Import a linear classifier
from sklearn.svm import LinearSVC

# Note that means are reshaped to work with scikit-learn
X = np.column_stack([means, maxs, stds])
y = labels.reshape(-1, 1)
model = LinearSVC()
model.fit(X, y)
Pythonで学ぶMachine Learningによる時系列データ解析

scikit-learnモデルを評価する

from sklearn.metrics import accuracy_score

# Different input data
predictions = model.predict(X_test)  

# Score our model with % correct
# Manually
percent_score = sum(predictions == labels_test) / len(labels_test)  
# Using a sklearn scorer
percent_score = accuracy_score(labels_test, predictions)  
Pythonで学ぶMachine Learningによる時系列データ解析

練習しましょう!

Pythonで学ぶMachine Learningによる時系列データ解析

Preparing Video For Download...