Classification et ingénierie des caractéristiques

Machine Learning for Time Series Data in Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Toujours visualiser les données brutes avant d'entraîner un modèle

Machine Learning for Time Series Data in Python

Visualisez vos séries temporelles !

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

Machine Learning for Time Series Data in Python

Quelles caractéristiques utiliser ?

  • Les séries temporelles brutes sont trop bruyantes pour la classification
  • Il faut calculer des caractéristiques !
  • Un bon début : résumer vos données audio
Machine Learning for Time Series Data in Python

Machine Learning for Time Series Data in Python

Calculer plusieurs caractéristiques

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 for Time Series Data in Python

Entraîner un classifieur avec scikit-learn

  • Nous avons réduit un jeu de données 2D (échantillons × temps) en plusieurs caractéristiques d'un jeu 1D (échantillons)
  • On peut combiner chaque caractéristique pour servir d'entrée au modèle
  • Avec un label par échantillon, on peut utiliser scikit-learn pour créer et entraîner un classifieur
Machine Learning for Time Series Data in Python

Préparer vos caractéristiques pour scikit-learn

# Importer un classifieur linéaire
from sklearn.svm import LinearSVC

# Remarque : les moyennes sont remaniées pour scikit-learn
X = np.column_stack([means, maxs, stds])
y = labels.reshape(-1, 1)
model = LinearSVC()
model.fit(X, y)
Machine Learning for Time Series Data in Python

Évaluer votre modèle scikit-learn

from sklearn.metrics import accuracy_score

# Données d'entrée différentes
predictions = model.predict(X_test)  

# Évaluer le modèle en % correct
# Manuellement
percent_score = sum(predictions == labels_test) / len(labels_test)  
# Avec un scoreur sklearn
percent_score = accuracy_score(labels_test, predictions)  
Machine Learning for Time Series Data in Python

Passons à la pratique !

Machine Learning for Time Series Data in Python

Preparing Video For Download...