Classificazione e feature engineering

Machine Learning per dati di serie temporali in Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Visualizza sempre i dati grezzi prima di addestrare i modelli

Machine Learning per dati di serie temporali in Python

Visualizza i dati di serie temporali!

ixs = np.arange(audio.shape[-1])
time = ixs / sfreq
fig, ax = plt.subplots()
ax.plot(time, audio)

Machine Learning per dati di serie temporali in Python

Quali feature usare?

  • Usare dati grezzi di serie temporali è troppo rumoroso per la classificazione
  • Dobbiamo calcolare delle feature!
  • Un inizio semplice: riassumi i tuoi dati audio
Machine Learning per dati di serie temporali in Python

Machine Learning per dati di serie temporali in Python

Calcolare più feature

print(audio.shape)
# (n_files, time)
(20, 7000) 
means = np.mean(audio, axis=-1)
maxs = np.max(audio, axis=-1)
stds = np.std(audio, axis=-1)

print(means.shape)
# (n_files,)
(20,) 
Machine Learning per dati di serie temporali in Python

Addestrare un classificatore con scikit-learn

  • Abbiamo compresso un insieme di dati 2D (campioni x tempo) in varie feature di un insieme 1D (campioni)
  • Possiamo combinare ogni feature e usarla come input di un modello
  • Se abbiamo un'etichetta per ogni campione, possiamo usare scikit-learn per creare e addestrare un classificatore
Machine Learning per dati di serie temporali in Python

Preparare le feature per scikit-learn

# Importa un classificatore lineare
from sklearn.svm import LinearSVC

# Nota: le medie sono riformattate per funzionare con scikit-learn
X = np.column_stack([means, maxs, stds])
y = labels.reshape(-1, 1)
model = LinearSVC()
model.fit(X, y)
Machine Learning per dati di serie temporali in Python

Valutare il modello scikit-learn

from sklearn.metrics import accuracy_score

# Dati di input diversi
predictions = model.predict(X_test)  

# Valuta il modello con la % corretta
# Manualmente
percent_score = sum(predictions == labels_test) / len(labels_test)  
# Con uno scorer di sklearn
percent_score = accuracy_score(labels_test, predictions)  
Machine Learning per dati di serie temporali in Python

Esercitiamoci!

Machine Learning per dati di serie temporali in Python

Preparing Video For Download...