始める無料で始める

同じ音の繰り返しをたくさん比較する

この演習では、データセットの各次元で平均をとり、結果を目視で確認するという、最もシンプルな分類手法から始めます。

前の章で扱った心拍データを使います。ある録音は心拍が「正常」、別の録音は「異常」です。違いを見分けられるか試してみましょう。

ワークスペースには、複数の心拍音を含む 2 つの DataFrame、normalabnormal(それぞれの形状は (n_times_points, n_audio_files))が用意されています。サンプリング周波数は sfreq という変数に読み込まれています。さらに、プロット用のユーティリティ関数 show_plot_and_make_titles() も利用できます。

この演習はコースの一部です

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

コースを見る

演習の手順

  • まず、これらの音声ファイル用の時間配列を作成します(すべて同じ長さです)。
  • 次に、2 つの DataFrame(順に normalabnormal)の値を縦方向に積み重ね、形状が (n_audio_files, n_times_points) の単一配列を作ります。
  • 最後に、用意されたコードで各リスト要素/軸をループし、対応する axis オブジェクトに時間経過に沿った音声をプロットします。
  • 左列に正常な心拍、右列に異常な心拍をプロットします。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

fig, axs = plt.subplots(3, 2, figsize=(15, 7), sharex=True, sharey=True)

# Calculate the time array
time = np.arange(____) / ____

# Stack the normal/abnormal audio so you can loop and plot
stacked_audio = np.hstack([____, ____]).T

# Loop through each audio file / ax object and plot
# .T.ravel() transposes the array, then unravels it into a 1-D vector for looping
for iaudio, ax in zip(stacked_audio, axs.T.ravel()):
    ax.plot(time, iaudio)
show_plot_and_make_titles()
コードを編集して実行