KDnuggets→ original

Comment utiliser itertools de Python pour le feature engineering des séries temporelles

itertools de Python aide à créer rapidement des features pour les séries temporelles. Le nouvel article présente des exemples pratiques de feature engineering e

Comment utiliser itertools de Python pour le feature engineering des séries temporelles
Source : KDnuggets. Collage: Hamidun News.
◐ Écouter l'article

Python itertools — c'est un module intégré pour travailler avec les itérateurs, qui devient un outil indispensable en feature engineering pour les séries temporelles. Si vous construisez des features via des boucles et copiez des datasets, itertools vous aidera à faire cela plusieurs fois plus rapidement et de manière plus économe en mémoire.

Qu'est-ce qu'itertools et pourquoi vous en avez besoin

Le module itertools contient des fonctions pour créer des itérateurs rapides et efficaces en mémoire. Pour travailler avec des séries temporelles, c'est critique : au lieu de stocker des listes en mémoire, nous générons des features à la volée. Sur des datasets avec des millions ou des milliards de points, ce n'est pas seulement pratique — c'est nécessaire pour pouvoir travailler du tout.

Principales fonctions itertools pour feature engineering :

  • `combinations()` — toutes les paires et combinaisons d'éléments (features de décalage, interactions de variables)
  • `permutations()` — toutes les permutations (test des ordres et de l'influence des features)
  • `islice()` — extraction de sous-séquences et fenêtres glissantes sans copie
  • `zip_longest()` — combinaison de séries de longueurs différentes avec gestion des valeurs manquantes
  • `chain()` — combinaison d'itérateurs en un seul flux sans copie de données

Exemples pratiques : de l'approche naïve à l'approche scalable

Problème classique : une série temporelle de prix, vous devez construire des features de décalage avec des décalages 1, 2, 3.

Approche naïve (lente) :

```python import pandas as pd data = pd.read_csv('prices.csv') for lag in range(1, 4): data[f'price_lag_{lag}'] = data['price'].shift(lag) ```

Problème : chaque `shift()` crée une copie du dataset en mémoire. Sur 10 millions de lignes, c'est ~300 millions d'opérations de copie plus 3x de consommation mémoire.

Avec itertools (rapide et économe) :

```python from itertools import islice prices = [100, 102, 105, 103, 107, 110] for lag in range(1, 4): lagged = list(islice(prices, lag, None)) print(f'lag {lag}: {lagged}') ```

`islice` ne copie pas la liste — il décale simplement le pointeur vers la position requise. Sur des datasets volumineux, cela économise des heures de calcul.

Deuxième exemple — fenêtres glissantes :

```python from itertools import islice, tee

def sliding_window(iterable, n): iterables = tee(iterable, n) for i, it in enumerate(iterables): for _ in range(i): next(it, None) return zip(*iterables)

prices = [100, 102, 105, 103, 107, 110] windows = list(sliding_window(prices, 3)) ```

Cela crée des fenêtres glissantes de taille 3, en utilisant des itérateurs paresseux au lieu de copier le tableau.

Performance : où la mémoire et le temps sont économisés

Sur des datasets avec des milliards de points :

  • Calcul paresseux — les éléments sont générés à la demande, pas chargés en bloc
  • Chaînes d'opérations — `chain()` combine les sources sans copies intermédiaires
  • Composition — en combinant itertools, nous construisons un pipeline complexe avec une mémoire minimale

Résultat : la consommation mémoire peut chuter de 10 à 100 fois. Dans le cloud, cela signifie une facture moins chère. Sur une machine locale — cela fonctionne avec ce qui ne tenait pas avant en RAM.

Ce que cela signifie pour vous

Pour les data scientists : travaillez avec des datasets qui ne tenaient simplement pas en mémoire auparavant.

Pour les ingénieurs ML : un modèle de production nécessite moins de ressources et est plus stable.

itertools n'est pas de la magie, c'est un moyen intégré de travailler avec les données plus intelligemment. Commencez par des features de décalage et des fenêtres glissantes, puis trouvez où vous pouvez appliquer le calcul paresseux ailleurs.

ZK
Hamidun News
Actualités IA sans bruit. Sélection éditoriale quotidienne de plus de 400 sources. Produit de Zhemal Khamidun, Head of AI chez Alpina Digital.
Qu'en pensez-vous ?
Chargement des commentaires…