Django Prophet est un outil d'analyse de séries chronologiques basé sur Python. Combiné avec le framework Django, il peut facilement effectuer une analyse et une prédiction de séries chronologiques. Cet article présentera les meilleures pratiques de Django Prophet et donnera des exemples de code spécifiques.
1. Installation et configuration
Tout d'abord, nous devons installer Django Prophet et ses bibliothèques dépendantes. Il peut être installé via la commande pip :
pip install django-prophet forecaster
Ensuite, ajoutez la configuration suivante dans le fichier settings.py du projet Django :
INSTALLED_APPS = [ ... 'prophet', ... ] PROPHET = { 'MODEL_PATH': os.path.join(BASE_DIR, 'model'), # 模型路径 'FORECAST_PATH': os.path.join(BASE_DIR, 'forecast'), # 预测结果路径 }
Dans la configuration ci-dessus, nous spécifions le chemin de stockage du modèle et des résultats de prédiction.
2. Préparation et importation des données
Avant d'effectuer une analyse de séries chronologiques, nous devons préparer les données et les importer dans la base de données Django. Vous pouvez choisir le format CSV ou importer des données via une requête de base de données. Voici un exemple de classe de modèle pour stocker des données de séries chronologiques :
from django.db import models class TimeSeriesData(models.Model): date = models.DateField() value = models.FloatField()
Grâce à la fonction de migration de données de Django, la classe de modèle peut être mappée à une table de base de données :
python manage.py makemigrations python manage.py migrate
3. Analyse des séries chronologiques
Ensuite, nous pouvons utiliser Django Prophet effectue une analyse de séries chronologiques. Voici un exemple de fonction d'affichage :
from django.shortcuts import render from prophet import Prophet def analyze(request): data = TimeSeriesData.objects.all().order_by('date') dates = [item.date for item in data] values = [item.value for item in data] df = pd.DataFrame({'ds': dates, 'y': values}) m = Prophet() m.fit(df) future = m.make_future_dataframe(periods=365) forecast = m.predict(future) forecast_data = forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']] return render(request, 'analyze.html', {'forecast_data': forecast_data})
Le code ci-dessus récupère d'abord les données de série chronologique de la base de données et les convertit en un objet Pandas DataFrame. Ensuite, créez un modèle Prophet et entraînez-le à l’aide des données.
Ensuite, nous utilisons la fonction make_future_dataframe pour générer la plage de temps qui doit être prédite, et utilisons la fonction prédire pour faire des prédictions. Les résultats de la prédiction sont stockés dans l'objet de prévision.
Enfin, nous transmettons les résultats de la prédiction au modèle analyse.html pour affichage.
4. Affichage du modèle
Dans le modèle analyse.html, nous pouvons utiliser le code suivant pour afficher les résultats de la prédiction :
{% for item in forecast_data %} <p>Date: {{ item.ds }}</p> <p>Predicted Value: {{ item.yhat }}</p> <p>Lower Bound: {{ item.yhat_lower }}</p> <p>Upper Bound: {{ item.yhat_upper }}</p> {% endfor %}
Le code ci-dessus utilise une boucle for pour parcourir les résultats de la prédiction et afficher la date, la valeur prédite, et les limites supérieure et inférieure.
Résumé :
Grâce aux étapes ci-dessus, nous pouvons implémenter une analyse de séries chronologiques basée sur Django Prophet. Ce processus comprend l'installation et la configuration, la préparation et l'importation des données, l'analyse des séries chronologiques et la présentation des modèles. En configurant correctement les paramètres et les modèles, nous pouvons obtenir des prédictions de séries chronologiques plus précises.
Il convient de noter que l'exemple ci-dessus utilise un modèle linéaire simple. Pour les séries chronologiques complexes, la précision des prédictions peut être améliorée en ajustant les paramètres du modèle Prophet et en ajoutant l'ingénierie des fonctionnalités.
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!