Muchas repeticiones de sonidos
En este ejercicio, vas a empezar con quizá la técnica de clasificación más simple: promediar a lo largo de dimensiones de un conjunto de datos e inspeccionar visualmente el resultado.
Usarás los datos de latidos del corazón descritos en el capítulo anterior. Algunas grabaciones son actividad cardiaca normal, mientras que otras son actividad anormal. Veamos si puedes detectar la diferencia.
En tu espacio de trabajo tienes dos DataFrames, normal y abnormal, cada uno con forma (n_times_points, n_audio_files) y que contienen el audio de varios latidos. Además, la frecuencia de muestreo está cargada en una variable llamada sfreq. También tienes disponible una función práctica de visualización show_plot_and_make_titles() en tu espacio de trabajo.
Este ejercicio forma parte del curso
Machine Learning para datos de series temporales en Python
Instrucciones del ejercicio
- Primero, crea el array de tiempo para estos archivos de audio (todos los audios tienen la misma duración).
- Después, apila los valores de los dos DataFrames (
normalyabnormal, en ese orden) para obtener un único array con forma(n_audio_files, n_times_points). - Por último, usa el código proporcionado para iterar por cada elemento de la lista/eje y representar el audio en el tiempo en el objeto axis correspondiente.
- Representarás latidos normales en la columna de la izquierda, y anormales en la de la derecha
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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()