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.
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).
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 :
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.
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.
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.
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!