Meningkatkan fitur untuk klasifikasi

Machine Learning untuk Data Deret Waktu di Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Auditory envelope

  • Haluskan data untuk menghitung auditory envelope
  • Terkait dengan total energi audio pada setiap momen waktu

Machine Learning untuk Data Deret Waktu di Python

Smoothing seiring waktu

  • Alih-alih merata-ratakan sepanjang seluruh waktu, kita bisa rata-rata lokal
  • Ini disebut smoothing pada deret waktu Anda
  • Menghapus noise jangka pendek, sambil mempertahankan pola umum
Machine Learning untuk Data Deret Waktu di Python

Melakukan smoothing pada data Anda

Machine Learning untuk Data Deret Waktu di Python

Menghitung statistik rolling window

# 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 untuk Data Deret Waktu di Python

Menghitung auditory envelope

  • Pertama rectify audio Anda, lalu haluskan

      audio_rectified = audio.apply(np.abs)
      audio_envelope = audio_rectified.rolling(50).mean()
    
Machine Learning untuk Data Deret Waktu di Python

Machine Learning untuk Data Deret Waktu di Python

Machine Learning untuk Data Deret Waktu di Python

Machine Learning untuk Data Deret Waktu di Python

Rekayasa fitur pada envelope

# 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 untuk Data Deret Waktu di Python

Menyiapkan fitur untuk scikit-learn

X = np.column_stack([envelope_mean, envelope_std, envelope_max])
y = labels.reshape(-1, 1)
Machine Learning untuk Data Deret Waktu di Python

Cross validation untuk klasifikasi

  • cross_val_score mengotomatiskan proses:
    • Membagi data menjadi set pelatihan/validasi
    • Melatih model pada data pelatihan
    • Memberi skor pada data validasi
    • Mengulangi proses ini
Machine Learning untuk Data Deret Waktu di Python

Menggunakan 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 untuk Data Deret Waktu di Python

Fitur auditori: Tempogram

  • Kita dapat meringkas informasi temporal yang lebih kompleks dengan fungsi khusus deret waktu
  • librosa adalah pustaka yang bagus untuk rekayasa fitur audio dan deret waktu
  • Di sini kita hitung tempogram, yang memperkirakan tempo suara dari waktu ke waktu
  • Kita dapat menghitung statistik ringkasan tempo seperti pada envelope
Machine Learning untuk Data Deret Waktu di Python

Menghitung tempogram

# 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 untuk Data Deret Waktu di Python

Ayo berlatih!

Machine Learning untuk Data Deret Waktu di Python

Preparing Video For Download...