Maison  >  Article  >  développement back-end  >  Python pour l'analyse de séries chronologiques : prévision et détection d'anomalies

Python pour l'analyse de séries chronologiques : prévision et détection d'anomalies

PHPz
PHPzavant
2023-08-31 20:09:131175parcourir

Python pour lanalyse de séries chronologiques : prévision et détection danomalies

Python est devenu le langage de choix des data scientists et des analystes, offrant une gamme complète de bibliothèques et d'outils d'analyse de données. Python excelle notamment dans l’analyse de séries chronologiques et excelle dans la prévision et la détection d’anomalies. Grâce à sa simplicité, sa polyvalence et sa forte prise en charge des techniques statistiques et d'apprentissage automatique, Python constitue une plateforme idéale pour extraire des informations précieuses à partir de données dépendantes du temps.

Cet article explore les capacités supérieures de Python en matière d'analyse de séries chronologiques, en se concentrant sur la prévision et la détection d'anomalies. En approfondissant les aspects pratiques de ces tâches, nous soulignons comment les bibliothèques et les outils de Python permettent une prévision et une identification précises des anomalies dans les données de séries chronologiques. À travers des exemples concrets et des résultats démonstratifs, nous démontrons l’efficacité et l’utilité de Python pour résoudre les défis d’analyse de séries chronologiques. Rejoignez-nous dans un voyage Python pour effectuer une analyse de séries chronologiques et découvrir des trésors cachés dans les données temporelles.

Prédiction à l'aide de Python

La prévision nous permet de prédire les valeurs futures sur la base d'observations passées. Python fournit plusieurs bibliothèques hautes performances telles que NumPy, pandas et scikit-learn qui facilitent la prévision de séries chronologiques. De plus, des modèles statistiques et des bibliothèques spécialisées telles que Prophet offrent des capacités de prévision plus avancées.

Dans le cadre de la tâche de prédire les ventes des magasins de détail pour le mois prochain, nous chargeons d'abord les données de séries chronologiques dans un DataFrame pandas et effectuons les préparatifs nécessaires. Une fois les données prêtes, nous pouvons explorer diverses méthodes de prévision telles que les moyennes mobiles, le lissage exponentiel et les modèles ARIMA pour l'analyse et la prévision.

Exemple

Voici un exemple de code

import pandas as pd
import statsmodels.api as sm

# Load and preprocess the time series data
sales_data = pd.read_csv('sales_data.csv', parse_dates=['Date'])
sales_data.set_index('Date', inplace=True)

# Fit the ARIMA model
model = sm.tsa.ARIMA(sales_data, order=(1, 1, 1))
model_fit = model.fit(disp=0)

# Make predictions
predictions = model_fit.predict(start='2023-07-01', end='2023-08-01', dynamic=False)

Dans cet exemple, nous chargeons les données de ventes à partir d'un fichier CSV, définissons la colonne de date comme index et ajustons un modèle ARIMA(1, 1, 1) aux données. Enfin, nous faisons nos prédictions pour le mois prochain.

Détection d'anomalies à l'aide de Python

La détection des anomalies consiste à identifier des modèles inhabituels dans les données de séries chronologiques. Python fournit une variété de techniques et de bibliothèques pour une détection efficace des anomalies, y compris des méthodes populaires basées sur des moyennes mobiles et des écarts types.

Supposons que nous ayons un ensemble de données de capteur contenant des relevés de température horaires. Nous recherchons des exceptions, telles que des augmentations ou des diminutions rapides de température. Vous trouverez ci-dessous un exemple de code utilisant une stratégie de moyenne mobile et d'écart type

Exemple

import pandas as pd

# Load the time series data
sensor_data = pd.read_csv('sensor_data.csv', parse_dates=['Timestamp'])
sensor_data.set_index('Timestamp', inplace=True)

# Calculate moving averages and standard deviations
window_size = 6
rolling_mean = sensor_data['Temperature'].rolling(window=window_size).mean()
rolling_std = sensor_data['Temperature'].rolling(window=window_size).std()

# Detect anomalies
anomalies = sensor_data[(sensor_data['Temperature'] > rolling_mean + 2 * rolling_std) |
                        (sensor_data['Temperature'] < rolling_mean - 2 * rolling_std)]

Dans cet exemple, nous utilisons une taille de fenêtre de 6 heures pour calculer la moyenne mobile et l'écart type des mesures de température. Nous sommes alors en mesure de repérer les anomalies en localisant les points de données qui s'écartent considérablement de la moyenne mobile.

Visualisation Python pour l'analyse de séries chronologiques

Python fournit de puissantes bibliothèques de visualisation qui améliorent notre compréhension des données de séries chronologiques, au-delà de la prédiction et de la détection d'anomalies. La visualisation permet d'identifier visuellement les modèles, les tendances et les anomalies pour améliorer la compréhension et prendre des décisions éclairées.

Étendons l'exemple précédent et intégrons les capacités de visualisation de Python pour mieux comprendre les données.

Visualisation des prévisions

Après avoir utilisé le modèle ARIMA pour la prévision des ventes, nous pouvons afficher les ventes attendues ainsi que les données de ventes réelles. Utilisez cette visualisation pour comparer facilement les chiffres attendus et réels.

Exemple

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.plot(sales_data.index, sales_data['Sales'], label='Actual Sales')
plt.plot(predictions.index, predictions, color='red', linestyle='--', label='Predicted Sales')
plt.title('Sales Forecasting')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.legend()
plt.show()

Dans cet exemple, la bibliothèque matplotlib est utilisée pour générer un graphique linéaire pour représenter visuellement les données de ventes réelles et prévues. Cette représentation graphique nous permet d'évaluer l'exactitude du modèle de prévision et d'identifier toute différence entre les valeurs prédites et observées.

Visualisation de la détection des anomalies

La visualisation de la détection des anomalies nécessite la création d'un graphique pour afficher les données de séries chronologiques, la moyenne mobile calculée et les anomalies détectées. Cette représentation visuelle permet une identification et une analyse claires des points de données anormaux. Voici un exemple

Exemple

import pandas as pd
import matplotlib.pyplot as plt

sensor_data = pd.read_csv('sensor_data.csv', parse_dates=['Timestamp'])
sensor_data.set_index('Timestamp', inplace=True)

window_size = 6
rolling_mean = sensor_data['Temperature'].rolling(window=window_size).mean()
rolling_std = sensor_data['Temperature'].rolling(window=window_size).std()

anomalies = sensor_data[(sensor_data['Temperature'] > rolling_mean + 2 * rolling_std) |
                        (sensor_data['Temperature'] < rolling_mean - 2 * rolling_std)]

plt.figure(figsize=(10, 6))
plt.plot(sensor_data.index, sensor_data['Temperature'], label='Temperature')
plt.plot(sensor_data.index, rolling_mean, color='red', linestyle='--', label='Moving Average')
plt.scatter(anomalies.index, anomalies['Temperature'], color='orange', label='Anomalies')
plt.title('Anomaly Detection: Temperature Sensor')
plt.xlabel('Timestamp')
plt.ylabel('Temperature')
plt.legend()
plt.show()

Cet exemple de code charge les données de séries chronologiques à partir d'un fichier CSV et définit la colonne d'horodatage comme index. Il calcule ensuite la moyenne mobile et l'écart type des relevés de température en utilisant une taille de fenêtre spécifique. Les anomalies peuvent être détectées en comparant les valeurs de température avec une moyenne mobile et un écart type calculés.

Conclusion

Dans l'ensemble, Python s'avère être un outil précieux pour l'analyse de séries chronologiques, notamment dans le domaine de la prévision et de la détection d'anomalies. Sa vaste bibliothèque, comprenant statsmodels, pandas et scikit-learn, fournit un écosystème puissant conçu pour travailler avec des données de séries chronologiques. En tirant parti de la puissance de ces bibliothèques, des modèles de prévision précis tels qu'ARIMA peuvent être construits et des techniques telles que les moyennes mobiles et l'écart type peuvent être utilisées pour identifier les anomalies. De plus, les bibliothèques de visualisation de Python, telles que matplotlib, permettent aux utilisateurs de créer des tracés visuellement convaincants qui approfondissent leur compréhension des données de séries chronologiques. Quel que soit le niveau d'expertise, Python fournit aux data scientists débutants et expérimentés les ressources nécessaires pour repérer les tendances, faire des prédictions précises et identifier les anomalies dans les ensembles de données de séries chronologiques.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer