Maison  >  Article  >  développement back-end  >  Exemples de classification de séries chronologiques en Python

Exemples de classification de séries chronologiques en Python

WBOY
WBOYoriginal
2023-06-10 11:58:441947parcourir

Python est actuellement l'un des langages de programmation les plus populaires, et ses fonctionnalités puissantes et flexibles en font le langage de choix dans les domaines de la science des données et de l'apprentissage automatique. Dans l'analyse des données, les séries chronologiques sont un concept très important car elles peuvent être utilisées pour décrire des données chronologiques, telles que les cours des actions, les changements météorologiques, etc.

Dans cet article, nous explorerons comment classer les données de séries chronologiques à l'aide de Python.

  1. Préparation des données

Tout d'abord, nous devons préparer les données pour la classification. Dans cet exemple, nous utiliserons un ensemble de données du référentiel UCI Machine Learning, qui contient une série chronologique de 1 000 jours, chacune composée de 24 heures de données météorologiques. Cet ensemble de données vise à prédire si la température minimale du lendemain passera en dessous d'un certain seuil.

Nous utiliserons la bibliothèque pandas pour charger l'ensemble de données.

import pandas as pd

# 加载数据集
data = pd.read_csv("weather.csv")

# 查看前几行数据
print(data.head())

Sortie :

      Date  R1  R2  R3  R4  R5  R6  R7  R8  R9  ...  R15  R16  R17  R18  R19  R20  R21  R22  R23  R24  Tmin
0  1/01/14  58  41  67  63  44  50  46  52  64  ...   82   83   62   49   67   73   65   52   39   23    42
1  2/01/14  46  45  36  63  72  75  80  65  68  ...   74   73   52   43   36   47   19   16   13   15    26
2  3/01/14  48  37  39  45  74  75  76  66  45  ...   76   62   49   50   38   50   29   15   13   15    30
3  4/01/14  46  43  47  76  48  68  77  61  61  ...   24   28   39   33   26    3    4    6    0   10    50
4  5/01/14  49  42  58  74  70  47  68  59  43  ...   55   37   36   42   30   29   35   31   25   22    32

Comme nous pouvons le voir, l'ensemble de données contient des informations telles que la date, 24 heures de données météorologiques et la température minimale (Tmin).

  1. Feature Engineering

Avant la classification, nous devons prétraiter les données. L'une des étapes est l'ingénierie des fonctionnalités, où nous devons extraire de nouvelles fonctionnalités des données d'origine pour améliorer les performances du modèle.

Nous pouvons extraire les caractéristiques suivantes de la série chronologique :

  • moyenne
  • variance
  • maximum
  • minimum
  • médiane
  • écart type

Nous pouvons utiliser des pandas pour extraire rapidement ces caractéristiques.

# 提取以下特征
features = []
for i in range(1, 25):
    features.append("R"+str(i))
    
data['Mean'] = data[features].mean(axis=1)
data['Std'] = data[features].std(axis=1)
data['Min'] = data[features].min(axis=1)
data['Max'] = data[features].max(axis=1)
data['Median'] = data[features].median(axis=1)
data['Var'] = data[features].var(axis=1)

# 查看更新后的数据集
print(data.head())

Sortie :

      Date  R1  R2  R3  R4  R5  R6  R7  R8  R9  ...  R18  R19  R20  R21  R22  R23  R24  Tmin       Mean        Std  Min  Max  Median         Var
0  1/01/14  58  41  67  63  44  50  46  52  64  ...   49   67   73   65   52   39   23    42  55.166667  15.181057   23   83    54.5  230.456140
1  2/01/14  46  45  36  63  72  75  80  65  68  ...   43   36   47   19   16   13   15    26  47.125000  20.236742   13   80    45.5  410.114035
2  3/01/14  48  37  39  45  74  75  76  66  45  ...   50   38   50   29   15   13   15    30  47.208333  19.541905   13   76    44.5  382.149123
3  4/01/14  46  43  47  76  48  68  77  61  61  ...   33   26    3    4    6    0   10    50  36.750000  19.767969    0   77    42.5  390.350877
4  5/01/14  49  42  58  74  70  47  68  59  43  ...   42   30   29   35   31   25   22    32  45.666667  16.013175   22   74    43.5  256.508772

Nous avons maintenant réussi à extraire quelques nouvelles fonctionnalités de la série chronologique, qui fourniront plus d'informations à notre classificateur.

  1. Partition des données

Ensuite, nous devons diviser l'ensemble de données en un ensemble d'entraînement et un ensemble de test. Nous utiliserons la bibliothèque scikit-learn pour accomplir cette tâche.

from sklearn.model_selection import train_test_split

X = data.drop(['Date','Tmin'], axis=1)
y = data['Tmin']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Ici, nous divisons l'ensemble de données en 80 % d'ensemble d'entraînement et 20 % d'ensemble de test.

  1. Classification des séries chronologiques

Maintenant, nous sommes prêts à classer les données à l'aide d'un classificateur de séries chronologiques. Dans cet exemple, nous utiliserons le modèle LightGBM.

import lightgbm as lgb

# 创建LightGBM分类器
clf = lgb.LGBMClassifier()

# 训练模型
clf.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = clf.predict(X_test)

# 计算精度
accuracy = sum(y_pred == y_test) / len(y_test)
print("Accuracy: {:.2f}%".format(accuracy * 100))

Sortie :

Accuracy: 94.50%

Nous avons obtenu une précision de 94,5 %, ce qui signifie que notre modèle a prédit très précisément si la température minimale est inférieure au seuil prédéfini.

  1. Conclusion

Classer les données de séries chronologiques devient très simple à l'aide du classificateur de séries chronologiques en Python. Dans cet article, nous utilisons le modèle LightGBM pour classer les données de séries chronologiques et utilisons la bibliothèque pandas pour prétraiter les données et extraire les fonctionnalités.

Que vous travailliez dans la prévision du cours des actions, la prévision des changements météorologiques ou d'autres tâches de séries chronologiques, ces outils et techniques peuvent vous aider à effectuer de meilleures analyses et prévisions de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn