聲音的多次重複
在這個練習中,你會從也許是最簡單的分類技巧開始:對資料集的各個維度取平均,並以視覺方式檢視結果。
你會使用上一章介紹的心跳資料。有些錄音是「正常」的心跳活動,另一些則是「異常」活動。來看看你能不能分辨差異。
工作環境中已提供兩個 DataFrame,normal 與 abnormal,形狀皆為 (n_times_points, n_audio_files),包含多段心跳的音訊。此外,取樣頻率已載入為變數 sfreq。另有一個方便的繪圖函式 show_plot_and_make_titles() 也可供你使用。
本練習屬於課程
Python 的時間序列資料機器學習
練習說明
- 先為這些音訊檔建立時間陣列(所有音訊長度都相同)。
- 接著,將兩個 DataFrame 的值依序堆疊在一起(
normal然後abnormal),得到形狀為(n_audio_files, n_times_points)的單一陣列。 - 最後,使用提供的程式碼迴圈逐一處理每個清單項目/座標軸,並在對應的座標軸物件上繪製隨時間變化的音訊。
- 左欄繪製正常心跳,右欄繪製異常心跳
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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()