Molte ripetizioni di suoni
In questo esercizio partirai forse dalla tecnica di classificazione più semplice: fare la media lungo le dimensioni di un insieme di dati e ispezionare visivamente il risultato.
Userai i dati del battito cardiaco descritti nel capitolo precedente. Alcune registrazioni mostrano attività cardiaca normale, altre invece attività anomala. Vediamo se riesci a cogliere la differenza.
Nel tuo workspace sono disponibili due DataFrame, normal e abnormal, entrambi con forma (n_times_points, n_audio_files) e contenenti l'audio di diversi battiti cardiaci. Inoltre, la frequenza di campionamento è caricata in una variabile chiamata sfreq. Nel tuo workspace è disponibile anche una funzione di comodo per il plotting, show_plot_and_make_titles().
Questo esercizio fa parte del corso
Machine Learning per dati di serie temporali in Python
Istruzioni dell'esercizio
- Per prima cosa, crea l'array dei tempi per questi file audio (tutti gli audio hanno la stessa durata).
- Poi, accoda i valori dei due DataFrame (
normaleabnormal, in quest'ordine) in modo da ottenere un unico array di forma(n_audio_files, n_times_points). - Infine, usa il codice fornito per ciclare su ogni elemento/lista/asse e traccia l'audio nel tempo nell'oggetto axis corrispondente.
- Traccerai i battiti cardiaci normali nella colonna di sinistra e quelli anomali in quella di destra
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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()