Muitas repetições de sons
Neste exercício, você começará talvez com a técnica de classificação mais simples: calcular a média das dimensões de um conjunto de dados e inspecionar visualmente o resultado.
Você usará os dados de batimento cardíaco descritos no último capítulo. Algumas gravações são atividades normais de batimentos cardíacos, enquanto outras são atividades anormais. Vamos ver se você consegue identificar a diferença.
Dois DataFrames, normal
e abnormal
, cada um com a forma de (n_times_points, n_audio_files)
, contendo o áudio de vários batimentos cardíacos, estão disponíveis em seu espaço de trabalho. Além disso, a frequência de amostragem é carregada em uma variável chamada sfreq
. Uma função de plotagem conveniente show_plot_and_make_titles()
também está disponível em seu espaço de trabalho.
Este exercício faz parte do curso
Aprendizado de máquina para dados de séries temporais em Python
Instruções do exercício
Primeiro, crie a matriz de tempo para esses arquivos de áudio (todos os áudios têm a mesma duração).
Em seguida, empilhe os valores dos dois DataFrames juntos (
normal
eabnormal
, nessa ordem) para que você tenha uma única matriz de formato(n_audio_files, n_times_points)
.Por fim, use o código fornecido para percorrer cada item/eixo da lista e desenhar o áudio ao longo do tempo no objeto de eixo correspondente.
Você verá os batimentos cardíacos normais na coluna da esquerda e os anormais na coluna da direita
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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()