Classification et ingénierie des caractéristiques

Machine Learning pour les données chronologiques en Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Toujours visualiser les données brutes avant d'ajuster un modèle

Machine Learning pour les données chronologiques en Python

Visualisez vos séries chronologiques !

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

Machine Learning pour les données chronologiques en Python

Quelles caractéristiques utiliser ?

  • Les séries chronologiques brutes sont trop bruyantes pour la classification
  • Il faut calculer des caractéristiques !
  • Départ facile : résumer vos données audio
Machine Learning pour les données chronologiques en Python

Machine Learning pour les données chronologiques en 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 pour les données chronologiques en Python

Ajuster un classificateur avec scikit-learn

  • Nous avons réduit un ensemble 2D (échantillons × temps) en plusieurs caractéristiques d'un ensemble 1D (échantillons)
  • On peut combiner chaque caractéristique et l'utiliser comme entrée d'un modèle
  • Avec une étiquette par échantillon, on peut utiliser scikit-learn pour créer et ajuster un classificateur
Machine Learning pour les données chronologiques en Python

Préparer vos caractéristiques pour scikit-learn

# Import a linear classifier
from sklearn.svm import LinearSVC

# Note that means are reshaped to work with scikit-learn
X = np.column_stack([means, maxs, stds])
y = labels.reshape(-1, 1)
model = LinearSVC()
model.fit(X, y)
Machine Learning pour les données chronologiques en Python

Évaluer votre modèle scikit-learn

from sklearn.metrics import accuracy_score

# Different input data
predictions = model.predict(X_test)  

# Score our model with % correct
# Manually
percent_score = sum(predictions == labels_test) / len(labels_test)  
# Using a sklearn scorer
percent_score = accuracy_score(labels_test, predictions)  
Machine Learning pour les données chronologiques en Python

Passons à la pratique !

Machine Learning pour les données chronologiques en Python

Preparing Video For Download...