Classificação e engenharia de atributos

Machine Learning para dados de séries temporais em Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Sempre visualize os dados brutos antes de ajustar modelos

Machine Learning para dados de séries temporais em Python

Visualize seus dados de séries temporais!

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

Machine Learning para dados de séries temporais em Python

Quais atributos usar?

  • Usar dados brutos de séries temporais é ruidoso demais para classificação
  • Precisamos calcular atributos!
  • Comece fácil: resuma seus dados de áudio
Machine Learning para dados de séries temporais em Python

Machine Learning para dados de séries temporais em Python

Calculando vários atributos

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 para dados de séries temporais em Python

Ajustando um classificador com scikit-learn

  • Acabamos de reduzir um conjunto 2D (amostras x tempo) a vários atributos de um conjunto 1D (amostras)
  • Podemos combinar cada atributo e usá-lo como entrada de um modelo
  • Se tivermos um rótulo por amostra, dá para usar scikit-learn para criar e ajustar um classificador
Machine Learning para dados de séries temporais em Python

Preparando seus atributos para scikit-learn

# Importe um classificador linear
from sklearn.svm import LinearSVC

# Note que os means foram reorganizados para funcionar com scikit-learn
X = np.column_stack([means, maxs, stds])
y = labels.reshape(-1, 1)
model = LinearSVC()
model.fit(X, y)
Machine Learning para dados de séries temporais em Python

Avaliando seu modelo do scikit-learn

from sklearn.metrics import accuracy_score

# Dados de entrada diferentes
predictions = model.predict(X_test)  

# Avalie o modelo com % de acertos
# Manualmente
percent_score = sum(predictions == labels_test) / len(labels_test)  
# Usando um scorer do sklearn
percent_score = accuracy_score(labels_test, predictions)  
Machine Learning para dados de séries temporais em Python

Vamos praticar!

Machine Learning para dados de séries temporais em Python

Preparing Video For Download...