[PYTHON] Prédisez la quantité d'énergie utilisée en 2 jours et publiez-la au format CSV

introduction

J'ai donné des conférences sur la façon de prédire la consommation d'énergie à l'aide de l'apprentissage automatique à divers endroits, mais la valeur réellement prédite n'est pas si correcte, n'est-ce pas? Après tout, c'est PoC, non? Nous avons reçu divers avis, je souhaite donc publier la valeur réellement prédite en CSV et lui faire vérifier sa capacité ...

Méthode de prédiction

Veuillez consulter l'article de Qiita pour des exemples de prédiction par plusieurs méthodes dans le passé.

Prévisions de consommation d'énergie avec Keras (TensorFlow)

Cible de prédiction

Prédire la consommation d'énergie dans la zone d'alimentation en Chine après 2 jours.

Vérification des résultats de prédiction

Les résultats des prévisions deux jours plus tard sont publiés sur le site Web afin de pouvoir être comparés aux résultats publiés de consommation d'électricité par M. Chugoku Denryoku.

https://blueomega.jp/20200811_power_prediction_challenge/yyyy-mm-dd_.csv

Si c'est le 2 septembre 2020, ce sera l'URL suivante. https://blueomega.jp/20200811_power_prediction_challenge/2020-09-02_.csv

Vous pouvez comparer en exécutant le script suivant sur Colaboratory.

python


import datetime as dt
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import r2_score

#Acquérir des données réelles jusqu'à la veille de la zone d'alimentation électrique de Chine
url = "https://www.energia.co.jp/nw/jukyuu/sys/juyo-2020.csv"
df_juyo = pd.read_csv(url, skiprows=2, encoding="Shift_JIS")
df_juyo.index = pd.to_datetime(df_juyo["DATE"] + " " + df_juyo["TIME"])

#Obtenez les données réelles du jour dans la zone d'alimentation en Chine
d = dt.datetime.now() + dt.timedelta(hours=9) - dt.timedelta(days=0)
url = "https://www.energia.co.jp/nw/jukyuu/sys/juyo_07_" + d.strftime("%Y%m%d") + ".csv"
df_tmp = pd.read_csv(url, skiprows=13, encoding="Shift_JIS",nrows=24)
df_tmp.index = pd.to_datetime(df_tmp.DATE + " " + df_tmp.TIME)

#Obtenez des prévisions après le 31 août
df = pd.DataFrame()
d = dt.datetime(2020,8,31)
while d < dt.datetime.now() + dt.timedelta(days=3):
  try:
    url = "https://blueomega.jp/20200811_power_prediction_challenge/" + d.strftime("%Y-%m-%d") + "_.csv"
    df = pd.concat([df, pd.read_csv(url)])
  except:
    print("No file.")
  d += dt.timedelta(days=1)

df.index = pd.to_datetime(df.pop("datetime"))

#Reflète la valeur réelle jusqu'à la veille
df["act"] = df_juyo["Performance(10 000 kW)"]

#Refléter la valeur réelle de la journée
for idx in df_tmp[df_tmp["Résultats du jour(10 000 kW)"] > 0].index:
  df.loc[idx, "act"] = df_tmp.loc[idx]["Résultats du jour(10 000 kW)"]

#Visualisez les prévisions et les performances
df_plot = df.copy()
df_plot = df_plot[["act", "y2"]]
df_plot.columns = ["act", "pred tuned"]

df_plot["2020-08-31":].plot(figsize=(15,5), ylim=(300,1200))
plt.show()

#Coefficient de décision
df_scr = df[df.act > 0]
print("Coefficient de décision(R2 SCORE) : ", r2_score(df_scr.act, df_scr.y2))

Voici le résultat de l'exécution à 17 heures le 3 septembre. Unknown-2.png Facteur déterminant (R2 SCORE): 0,9494716417755021

Les valeurs prévues sont mises à jour quotidiennement à 1h00 et 12h00, veuillez donc jeter un œil si vous êtes intéressé. Nous sommes également impatients d'entendre ceux qui ont besoin de la même capacité pour faire des prédictions.

Postscript

Voici le résultat de l'exécution à 6h00 le 4 septembre. Unknown-3.png Facteur déterminant (R2 SCORE): 0,9454478929760703

Je me demande si ça a empiré un peu ...

Recommended Posts

Prédisez la quantité d'énergie utilisée en 2 jours et publiez-la au format CSV
[Note] Essayons de prédire la quantité d'électricité utilisée! (Partie 1)
Lisez le fichier csv et affichez-le dans le navigateur
Racler le calendrier de Hinatazaka 46 et le refléter dans Google Agenda
Vérifier le taux de compression et le temps de PIXZ utilisé en pratique
Gratter la liste des magasins membres Go To EAT dans la préfecture de Fukuoka et la convertir en CSV
Gratter la liste des magasins membres Go To EAT dans la préfecture de Niigata et la convertir en CSV
Trouvez-le dans la file d'attente et modifiez-le
Celui qui divise le fichier csv, le lit et le traite en parallèle
Récupérer le csv publié avec Github Action et le publier sur les pages Github
Trouvez le nombre de jours dans un mois
Correction des arguments de la fonction utilisée dans map
Si vous définissez une méthode dans une classe Ruby, puis définissez une méthode dans celle-ci, elle devient une méthode de la classe d'origine.
Le résultat de la création d'un album de cartes de jeunes mariés italiens en Python et de son partage
Lisez le fichier csv avec le notebook jupyter et écrivez le graphique l'un sur l'autre
Représentation numérique des jours dans différentes langues
Utilisé depuis l'introduction de Node.js dans l'environnement WSL
Traitement pleine largeur et demi-largeur des données CSV en Python
Scraping Go To EAT membres magasins dans la préfecture d'Osaka et conversion au format CSV
Prédisons le timing de Barus et apprécions le film lentement
Le processus de création et d'amélioration du code Python orienté objet
[Astuces] Problèmes et solutions dans le développement de python + kivy
Explication du CSV et exemple d'implémentation dans chaque langage de programmation
[Python] Le rôle de l'astérisque devant la variable. Divisez la valeur d'entrée et affectez-la à une variable
Comptez bien le nombre de caractères thaïlandais et arabes en Python
[Python] Comment obtenir le premier et le dernier jour du mois
Probabilité des prix les plus élevés et les plus bas des louveteaux à Atsumori
Notifier le contenu de la tâche avant et après l'exécution de la tâche avec Fabric
Utilisez PyCaret pour prédire le prix des appartements d'occasion à Tokyo!
Convertissez le résultat de python optparse en dict et utilisez-le
Utilisez le SDK Qore pour prédire les augmentations et les baisses de prix BTC
Obtenez le titre et la date de livraison de Yahoo! News en Python
Formatez le journal Git et obtenez le nom du fichier validé au format csv
Notez que je comprends l'algorithme du classificateur Naive Bayes. Et je l'ai écrit en Python.
[Python / Jupyter] Traduisez le commentaire du programme copié dans le presse-papiers et insérez-le dans une nouvelle cellule.
Utilisez Cloud Dataflow pour modifier dynamiquement la destination en fonction de la valeur des données et enregistrez-la dans GCS
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)