[PYTHON] Prognostizieren Sie den Stromverbrauch in 2 Tagen und veröffentlichen Sie ihn in CSV

Einführung

Ich habe Vorträge darüber gehalten, wie der Stromverbrauch mithilfe von maschinellem Lernen an verschiedenen Orten vorhergesagt werden kann, aber der tatsächlich vorhergesagte Wert ist nicht so korrekt, nicht wahr? Immerhin ist es PoC, oder? Wir haben verschiedene Meinungen erhalten, daher möchte ich den tatsächlich vorhergesagten Wert in CSV veröffentlichen und seine Fähigkeit überprüfen lassen ...

Vorhersagemethode

In der Vergangenheit haben wir als Artikel von Qiita ein Beispiel für die Vorhersage mit mehreren Methoden veröffentlicht. Schauen Sie also bitte mal rein.

Stromverbrauchsprognose mit Keras (TensorFlow)

Vorhersageziel

Prognostizieren Sie den Stromverbrauch im Energiegebiet China nach 2 Tagen.

Überprüfung der Vorhersageergebnisse

Die Prognoseergebnisse zwei Tage später werden auf der Website veröffentlicht, damit sie mit den veröffentlichten Ergebnissen des Stromverbrauchs von Herrn Chugoku Denryoku verglichen werden können.

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

Wenn es der 2. September 2020 ist, ist dies die folgende URL. https://blueomega.jp/20200811_power_prediction_challenge/2020-09-02_.csv

Sie können vergleichen, indem Sie das folgende Skript in Colaboratory ausführen.

python


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

#Erfassen Sie aktuelle Daten bis zum Tag vor dem China Electric Power Area
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"])

#Erfassen Sie die tatsächlichen Daten des Tages des chinesischen Machtgebiets
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)

#Erhalten Sie Prognosedaten nach dem 31. August
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"))

#Gibt den tatsächlichen Wert bis zum Vortag wieder
df["act"] = df_juyo["Performance(10.000 kW)"]

#Reflektieren Sie den tatsächlichen Wert des Tages
for idx in df_tmp[df_tmp["Ergebnisse am Tag(10.000 kW)"] > 0].index:
  df.loc[idx, "act"] = df_tmp.loc[idx]["Ergebnisse am Tag(10.000 kW)"]

#Visualisieren Sie Prognosen und Leistung
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()

#Entscheidungskoeffizient
df_scr = df[df.act > 0]
print("Entscheidungskoeffizient(R2 SCORE) : ", r2_score(df_scr.act, df_scr.y2))

Dies ist das Ausführungsergebnis ab 5 Uhr am 3. September. Unknown-2.png Bestimmungsfaktor (R2 SCORE): 0,9494716417755021

Die vorhergesagten Werte werden täglich um 1:00 und 12:00 Uhr aktualisiert. Schauen Sie also bitte vorbei, wenn Sie interessiert sind. Wir freuen uns auch darauf, von denen zu hören, die die gleiche Fähigkeit benötigen, Vorhersagen zu treffen.

Nachtrag

Dies ist das Ausführungsergebnis ab 6:00 Uhr am 4. September. Unknown-3.png Bestimmungsfaktor (R2 SCORE): 0,9454478929760703

Ich frage mich, ob es etwas schlimmer geworden ist ...

Recommended Posts

Prognostizieren Sie den Stromverbrauch in 2 Tagen und veröffentlichen Sie ihn in CSV
[Anmerkung] Versuchen wir, den Stromverbrauch vorherzusagen! (Teil 1)
Lesen Sie die CSV-Datei und zeigen Sie sie im Browser an
Verschrotten Sie den Zeitplan von Hinatazaka 46 und spiegeln Sie ihn in Google Kalender wider
Überprüfen Sie die Komprimierungsrate und -zeit von PIXZ, die in der Praxis verwendet werden
Verschrotten Sie die Liste der Go To EAT-Mitgliedsgeschäfte in der Präfektur Fukuoka und konvertieren Sie sie in CSV
Verschrotten Sie die Liste der Go To EAT-Mitgliedsspeicher in der Präfektur Niigata und konvertieren Sie sie in CSV
Suchen Sie es in der Warteschlange und bearbeiten Sie es
Derjenige, der die CSV-Datei teilt, liest und parallel verarbeitet
Scraping der veröffentlichten CSV mit Github Action und Veröffentlichung auf Github Pages
Finden Sie die Anzahl der Tage in einem Monat
Korrigieren Sie die Argumente der in map verwendeten Funktion
Wenn Sie eine Methode in einer Ruby-Klasse definieren und dann eine Methode darin definieren, wird sie zu einer Methode der ursprünglichen Klasse.
Das Ergebnis der Erstellung eines Kartenalbums italienischer Jungvermählten in Python und dessen Weitergabe
Lesen Sie die CSV-Datei mit dem Jupiter-Notizbuch und schreiben Sie die Grafik übereinander
Numerische Darstellung von Tagen in verschiedenen Sprachen
Wird ab der Einführung von Node.js in der WSL-Umgebung verwendet
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Scraping Gehen Sie zu EAT-Mitgliedsgeschäften in der Präfektur Osaka und konvertieren Sie zu CSV
Lassen Sie uns das Timing von Barus vorhersagen und den Film langsam genießen
Der Prozess, Python-Code objektorientiert zu machen und zu verbessern
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Erläuterung der CSV und Implementierungsbeispiel in jeder Programmiersprache
[Python] Die Rolle des Sterns vor der Variablen. Teilen Sie den Eingabewert und weisen Sie ihn einer Variablen zu
Zählen Sie die Anzahl der thailändischen und arabischen Zeichen in Python gut
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
Wahrscheinlichkeit der höchsten und niedrigsten Jungtierpreise in Atsumori
Benachrichtigen Sie den Inhalt der Aufgabe vor und nach der Ausführung der Aufgabe mit Fabric
Verwenden Sie PyCaret, um den Preis von Gebrauchtwohnungen in Tokio vorherzusagen!
Konvertieren Sie das Ergebnis von Python Optparse, um es zu diktieren und zu verwenden
Verwenden Sie das Qore SDK, um BTC-Preiserhöhungen und -senkungen vorherzusagen
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Formatieren Sie das Git-Protokoll und erhalten Sie den festgeschriebenen Dateinamen im CSV-Format
Beachten Sie, dass ich den Algorithmus des maschinell lernenden Naive Bayes-Klassifikators verstehe. Und ich habe es in Python geschrieben.
[Python / Jupyter] Übersetzen Sie den Kommentar des in die Zwischenablage kopierten Programms und fügen Sie ihn in eine neue Zelle ein.
Verwenden Sie Cloud Dataflow, um das Ziel dynamisch entsprechend dem Wert der Daten zu ändern und in GCS zu speichern
Laden Sie Daten mit einem Befehl und einer Aktualisierung auf s3 von aws hoch und löschen Sie die verwendeten Daten (unterwegs).