Combining timeseries data with machine learning

Machine Learning pour les données chronologiques en Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Familiarisation avec nos données

  • Les ensembles de données utilisés dans ce cours sont tous offerts gratuitement en ligne
  • Il y a de nombreux ensembles à télécharger sur le Web; ceux de ce cours viennent de Kaggle
Machine Learning pour les données chronologiques en Python

Données acoustiques des battements de cœur

  • Plusieurs enregistrements de sons cardiaques de différents patients
  • Certains avaient un cœur qui fonctionne normalement, d'autres des anomalies
  • Données sous forme de fichiers audio + étiquettes pour chaque fichier
  • Peut-on repérer les battements « anormaux » ?
Machine Learning pour les données chronologiques en Python

Chargement de données audio

from glob import glob
files = glob('data/heartbeat-sounds/files/*.wav')

print(files)
['data/heartbeat-sounds/proc/files/murmur__201101051104.wav',
 ...
 'data/heartbeat-sounds/proc/files/murmur__201101051114.wav']
Machine Learning pour les données chronologiques en Python

Lecture de données audio

import librosa as lr
# `load` accepts a path to an audio file
audio, sfreq = lr.load('data/heartbeat-sounds/proc/files/murmur__201101051104.wav')

print(sfreq)
2205

Ici, la fréquence d'échantillonnage est 2205, donc 2205 échantillons par seconde

Machine Learning pour les données chronologiques en Python

Déduire le temps à partir des échantillons

  • Si l'on connaît la fréquence d'échantillonnage d'une série chronologique, on connaît l'horodatage de chaque point de données, relatif au premier
  • Remarque : cela suppose une fréquence fixe et aucune perte de points
Machine Learning pour les données chronologiques en Python

Créer un tableau de temps (I)

  • Créez un tableau d'indices, un par échantillon, puis divisez par la fréquence d'échantillonnage

      indices = np.arange(0, len(audio))
      time = indices / sfreq
    
Machine Learning pour les données chronologiques en Python

Créer un tableau de temps (II)

  • Trouvez l'horodatage du point de données N-1. Puis utilisez linspace() pour interpoler de zéro jusqu'à ce temps

      final_time = (len(audio) - 1) / sfreq
      time = np.linspace(0, final_time, sfreq)
    
Machine Learning pour les données chronologiques en Python

Jeu de données de la New York Stock Exchange

  • Cet ensemble contient les valeurs boursières d'entreprises sur 10 ans
  • Peut-on déceler des motifs historiques pour prédire la valeur future des entreprises ?
Machine Learning pour les données chronologiques en Python

Examen des données

data = pd.read_csv('path/to/data.csv')

data.columns
Index(['date', 'symbol', 'close', 'volume'], dtype='object')
data.head()
         date symbol       close       volume
0  2010-01-04   AAPL  214.009998  123432400.0
1  2010-01-04    ABT   54.459951   10829000.0
2  2010-01-04    AIG   29.889999    7750900.0
3  2010-01-04   AMAT   14.300000   18615100.0
4  2010-01-04   ARNC   16.650013   11512100.0
Machine Learning pour les données chronologiques en Python

Séries chronologiques avec les DataFrame Pandas

  • On peut examiner le type d'objet de chaque colonne via l'attribut dtypes
df['date'].dtypes
0    object
1    object
2    object
dtype: object
Machine Learning pour les données chronologiques en Python

Convertir une colonne en série chronologique

  • Pour qu'une colonne d'un DataFrame soit traitée comme série chronologique, utilisez la fonction to_datetime()
df['date'] = pd.to_datetime(df['date'])

df['date']
0   2017-01-01
1   2017-01-02
2   2017-01-03
Name: date, dtype: datetime64[ns]
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...