Îmbunătățirea caracteristicilor pentru clasificare

Machine Learning pentru Date de Tip Șir de Timp în Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Anvelope auditiv

  • Neteziți datele pentru a calcula anvelope auditiv
  • Legat de cantitatea totală de energie audio la fiecare moment de timp

Machine Learning pentru Date de Tip Șir de Timp în Python

Netezire în timp

  • În loc să calculăm media pe tot intervalul de timp, putem folosi o medie locală
  • Aceasta se numește netezire a seriei de timp
  • Elimină zgomotul pe termen scurt, păstrând tendința generală
Machine Learning pentru Date de Tip Șir de Timp în Python

Netezirea datelor

Machine Learning pentru Date de Tip Șir de Timp în Python

Calcularea unei statistici pe fereastră glisantă

# Audio is a Pandas DataFrame
print(audio.shape)  
# (n_times, n_audio_files)
(5000, 20)  
# Smooth our data by taking the rolling mean in a window of 50 samples
window_size = 50
windowed = audio.rolling(window=window_size)
audio_smooth = windowed.mean()
Machine Learning pentru Date de Tip Șir de Timp în Python

Calcularea anvelopei auditive

  • Mai întâi rectificați semnalul audio, apoi aplicați netezire

      audio_rectified = audio.apply(np.abs)
      audio_envelope = audio_rectified.rolling(50).mean()
    
Machine Learning pentru Date de Tip Șir de Timp în Python

Machine Learning pentru Date de Tip Șir de Timp în Python

Machine Learning pentru Date de Tip Șir de Timp în Python

Machine Learning pentru Date de Tip Șir de Timp în Python

Ingineria caracteristicilor anvelopei

# Calculate several features of the envelope, one per sound
envelope_mean = np.mean(audio_envelope, axis=0)
envelope_std = np.std(audio_envelope, axis=0)
envelope_max = np.max(audio_envelope, axis=0)

# Create our training data for a classifier
X = np.column_stack([envelope_mean, envelope_std, envelope_max])
Machine Learning pentru Date de Tip Șir de Timp în Python

Pregătirea caracteristicilor pentru scikit-learn

X = np.column_stack([envelope_mean, envelope_std, envelope_max])
y = labels.reshape(-1, 1)
Machine Learning pentru Date de Tip Șir de Timp în Python

Validare încrucișată pentru clasificare

  • cross_val_score automatizează procesul de:
    • Împărțire a datelor în seturi de antrenare / validare
    • Antrenare a modelului
    • Evaluare pe datele de validare
    • Repetare a procesului
Machine Learning pentru Date de Tip Șir de Timp în Python

Utilizarea cross_val_score

from sklearn.model_selection import cross_val_score

model = LinearSVC()
scores = cross_val_score(model, X, y, cv=3) 
print(scores)
[0.60911642 0.59975305 0.61404035]
Machine Learning pentru Date de Tip Șir de Timp în Python

Caracteristici auditive: Tempograma

  • Informațiile temporale complexe pot fi rezumate cu funcții specifice seriilor de timp
  • librosa este o bibliotecă excelentă pentru ingineria caracteristicilor auditive
  • Vom calcula tempograma, care estimează tempo-ul unui sunet în timp
  • Putem calcula statistici rezumative ale tempo-ului similar cu anvelope
Machine Learning pentru Date de Tip Șir de Timp în Python

Calcularea tempogramei

# Import librosa and calculate the tempo of a 1-D sound array
import librosa as lr
audio_tempo = lr.beat.tempo(y=audio, sr=sfreq, 
                            hop_length=2**6)
Machine Learning pentru Date de Tip Șir de Timp în Python

Să exersăm!

Machine Learning pentru Date de Tip Șir de Timp în Python

Preparing Video For Download...