Classificatie en feature engineering

Machine Learning voor tijdreeksgegevens in Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Visualiseer altijd ruwe data voordat je modellen fit

Machine Learning voor tijdreeksgegevens in Python

Visualiseer je tijdreeksdata!

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

Machine Learning voor tijdreeksgegevens in Python

Welke features gebruik je?

  • Ruwe tijdreeksen zijn te noisy voor classificatie
  • We moeten features berekenen!
  • Makkelijke start: vat je audiodata samen
Machine Learning voor tijdreeksgegevens in Python

Machine Learning voor tijdreeksgegevens in Python

Meerdere features berekenen

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 voor tijdreeksgegevens in Python

Een classifier fitten met scikit-learn

  • We hebben een 2D-gegevensset (samples × tijd) samengevat tot meerdere features van een 1D-gegevensset (samples)
  • We kunnen features combineren en als invoer voor een model gebruiken
  • Met een label per sample kun je met scikit-learn een classifier maken en fitten
Machine Learning voor tijdreeksgegevens in Python

Je features klaarmaken voor 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 voor tijdreeksgegevens in Python

Je scikit-learn-model scoren

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 voor tijdreeksgegevens in Python

Laten we oefenen!

Machine Learning voor tijdreeksgegevens in Python

Preparing Video For Download...