Clasificare și ingineria caracteristicilor

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

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Vizualizați întotdeauna datele brute înainte de a antrena modele

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

Vizualizați datele de tip serie temporală!

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

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

Ce caracteristici să utilizăm?

  • Datele brute de tip serie temporală sunt prea zgomotoase pentru clasificare
  • Este necesar să calculăm caracteristici!
  • Un punct de plecare simplu: rezumați datele audio
Machine Learning pentru Date de Tip Șir de Timp în Python

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

Calcularea mai multor caracteristici

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 pentru Date de Tip Șir de Timp în Python

Antrenarea unui clasificator cu scikit-learn

  • Am comprimat un set de date 2-D (eșantioane x timp) în mai multe caracteristici ale unui set de date 1-D (eșantioane)
  • Putem combina fiecare caracteristică și o putem folosi ca intrare pentru un model
  • Dacă avem o etichetă pentru fiecare eșantion, putem utiliza scikit-learn pentru a crea și antrena un clasificator
Machine Learning pentru Date de Tip Șir de Timp în Python

Pregătirea caracteristicilor pentru 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 pentru Date de Tip Șir de Timp în Python

Evaluarea modelului 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 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...