[PYTHON] Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen

Einführung

Ich habe versucht zu sehen, wie viel Strombedarf durch maschinelles Lernen vorhergesagt werden kann, also werde ich das Verfahren organisieren.

Nachtrag

Es ist ein halbes Jahr her, seit ich diesen Artikel geschrieben habe, und ich habe viel über neue Dinge gelernt, also habe ich den Artikel für Teil 2 geschrieben. Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2 ](http://qiita.com/mix_dvd/items/1f96f5202614dbea93e0)

Nachtrag

Der folgende Artikel wurde ebenfalls am 22. Dezember 2017 erstellt. Bitte beziehen Sie sich auch darauf. Stromverbrauchsprognose mit TensorFlow mit Keras

Umgebung verwendet

Maschine: MacBook Air Mid 2012 Sprache: Python 3.5.1 Ausführen: Jupyter Notebook 4.2.1 Bibliothek: scikit-learn auf Anaconda 4.1.0

Datensammlung

Energienachfrage

Laden Sie zunächst die Daten zum Strombedarf von der Tokyo Electric Power-Website herunter.

http://www.tepco.co.jp/forecast/html/download-j.html

Der Dateiname war "juyo-2016.csv". Die heruntergeladenen Daten sind eine CSV mit Datum, Uhrzeit und tatsächlicher Leistung. Da sie jedoch eine zusätzliche Zeichenfolge enthalten, korrigieren Sie sie und speichern Sie sie als UTF-8.

Das Format der gespeicherten Daten ist wie folgt.

DATE TIME Performance(10.000 kW)
2016/04/01 00:00 234
2016/04/01 01:00 235
...

Temperatur

Als ich als nächstes nach Referenzmaterial suchte, konnte ich frühere Wetterdaten von der Meteorologischen Agentur herunterladen, sodass ich die Daten für denselben Zeitraum und dasselbe Intervall wie die Daten zum Strombedarf herunterladen werde.

http://www.data.jma.go.jp/gmd/risk/obsdl/index.php

Der Dateiname war "data.csv". Die heruntergeladenen Daten sind CSV von Datum und Uhrzeit, Temperatur, Qualitätsinformationen und einheitlicher Nummer. Da sie jedoch eine kleine zusätzliche Zeichenfolge enthalten, korrigieren Sie sie und speichern Sie sie als UTF-8.

Das Format der gespeicherten Daten ist wie folgt.

Datum (und Uhrzeit Temperatur(℃)
2016-04-01 00:00 15
2016-04-01 01:00 16
...

Datenerfassung

python


import pandas as pd
import numpy as np

#Leistungsdaten lesen
kw_df = pd.read_csv("juyo-2016.csv")

#Temperaturdaten lesen
temp_df = pd.read_csv("data.csv")

python


import pandas as pd

url = "http://www.tepco.co.jp/forecast/html/images/juyo-2016.csv"

kw_df = pd.read_csv(url, encoding="shift_jis", skiprows=2)
kw_df.head()

file = "data.csv"
temp_df = pd.read_csv(file, encoding="shift_jis", skiprows=4)
temp_df = temp_df[temp_df.columns[:2]]
temp_df.columns = ["Datum (und Uhrzeit","Temperatur(℃)"]

Datenverarbeitung

Bei der Anwendung auf maschinelles Lernen kombinieren wir die Daten und konvertieren sie in numerische Daten für maschinelles Lernen. Erstens sind die Datumsdaten unbrauchbar, also konvertieren wir sie in Tagesdaten.

[Beispiel] Sonntag-> 0 Montag-> 1 ...Und

Da es sich um stündliche Daten handelt, konvertieren Sie als Nächstes die Zeit in Daten.

[Beispiel] 0:00 -> 0 1:00 -> 1 ...Und

python


#Daten kombinieren
df = kw_df
df["Temperatur"] = temp_df["Temperatur(℃)"]

#Tagesdaten abrufen

import datetime

pp = df["DATE"]
tmp = []

for i in range(len(pp)):
    d = datetime.datetime.strptime(pp[i], "%Y/%m/%d")
    tmp.append(d.weekday())
    
df["weekday"] = tmp

#Zeitdaten abrufen

pp = df["TIME"]
tmp = []

for i in range(len(pp)):
    d = datetime.datetime.strptime(pp[i], "%H:%M")
    tmp.append(d.hour)
    
df["hour"] = tmp

Erstellung von Trainingsdaten und Testdaten

Erstellen Sie Trainingsdaten und Testdaten aus den verarbeiteten Daten. Hier sind die für die Eingabe verwendeten Variablen "Temperatur", "Tag" und "Zeit", und die Ausgangsvariablen sind "Leistung".

Die Folge der verarbeiteten Daten ist "DATUM", "ZEIT", "Ist (10.000 kW)", "Temperatur", "Wochentag", "Stunde", also Eingabe (erklärende Variable) 3,4, Aus der 5. Spalte erhalten, verwendet die Ausgabe (Ausgabevariable) das tatsächliche Ergebnis (10.000 kW) in der 2. Spalte. Es normalisiert auch die Daten für maschinelles Lernen.

python


#Eingang
pp = df[["Temperatur","weekday","hour"]]
X = pp.as_matrix().astype('float')

#Ausgabe
pp = df["Performance(10.000 kW)"]
y = pp.as_matrix().flatten()

#Laden Sie das Kreuzvalidierungsmodul
from sklearn import cross_validation

#Trainingsset mit beschrifteten Daten(X_train, y_train)Und Testset(X_test, y_test)Eingeteilt in
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=.2, random_state=42)

#Laden Sie das Normalisierungsmodul
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
scaler.fit(X_train)

X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

Lernen

Versuchen wir es mit maschinellem Lernen mit SVM.

python


#Modul laden
from sklearn import svm
model = svm.SVC()

#Lernen
model.fit(X_train, y_train)
# model.score(X,y)Verwenden Sie diese Option, um die Vorhersagegenauigkeit zu erhalten
print(model.score(X_test,y_test))

Die vorhergesagte Punktzahl ist "0.00312989045383"! !! Ich war überrascht, wie niedrig die Punktzahl war! !! Es ist nicht gut! Du denkst ...

Bestätigung der Prognoseergebnisse

Um zu sehen, wie es aussieht, habe ich ein Diagramm gezeichnet und es überprüft.

python


#Fehlerberechnung
pp = pd.DataFrame({'kw': np.array(y_test), "result": np.array(result)})
pp["err"] = pp["kw"] - pp["result"]

pp.plot()

Unknown.png

Irgendwie scheint es so zu folgen, wie es ist (^ - ^) Überprüfen Sie das Vorhersageergebnis mit tatsächlichen Werten.

python


err_max = 0
err_min = 50000
err_ave = 0

for i in range(len(pp)):
    if err_max < pp["err"][i]:
        err_max = pp["err"][i]
    if err_min > pp["err"][i]:
        err_min = pp["err"][i]
    err_ave += pp["err"][i]

print(err_max)
print(err_min)
print(err_ave / i)

Das Ausführungsergebnis ist wie folgt.

1571
-879
114.81661442

Was ist mit diesem Ergebnis? Ich kann nicht sagen, ob es gut oder schlecht ist ... (-_-;)

Eigentlich denke ich, ich muss mehr darüber nachdenken, aber ich dachte, wenn es eine Situation gäbe, in der ich in einer Situation, in der es nur wenige Daten aus der Vergangenheit gab, eine Prognose des Strombedarfs erstellen müsste, wäre dies ein gutes Referenzergebnis.

Übrigens wurden die Jupyter Notebook-Datei und die verarbeitete CSV-Datei auf GitHub veröffentlicht. Bitte lesen Sie auch diese.

https://github.com/shinob/predict_kw

Recommended Posts

Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen
Strombedarfsprognose der GRU
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
Aktienkursprognose durch maschinelles Lernen Numerai Signals
Einführung in das maschinelle Lernen
Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (5)
Versuchen Sie, durch maschinelles Lernen anhand von Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (3).
Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (1)
Versuchen Sie, durch maschinelles Lernen anhand von Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (4)
Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (2)
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Anfänger des maschinellen Lernens versuchen, einen Entscheidungsbaum zu erstellen
[Maschinelles Lernen] Versuchen Sie, Objekte mithilfe der selektiven Suche zu erkennen
Eine Einführung in das maschinelle Lernen
Super Einführung in das maschinelle Lernen
4 [/] Vier Arithmetik durch maschinelles Lernen
Versuchen Sie es mit Kaggle leicht maschinell
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Anfänger des maschinellen Lernens versuchen, Naive Bayes zu erreichen (2) - Implementierung
Aktienkursprognose durch maschinelles Lernen Beginnen wir mit Numerai
Anfänger des maschinellen Lernens versuchen, Naive Bayes (1) - Theorie zu erreichen
Einführung in das maschinelle Lernen Schreiben von Notizen
[Maschinelles Lernen] Lassen Sie uns den Entscheidungsbaum studieren
Zusammenfassung des maschinellen Lernens von Python-Anfängern
Anfänger des maschinellen Lernens versuchen eine lineare Regression
SVM versucht maschinelles Lernen mit Scikit-Learn
Einführung in die Bibliothek für maschinelles Lernen SHOGUN
[Maschinelles Lernen] Versuchen Sie, zufällige Wälder zu studieren
Sammeln von Daten zum maschinellen Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 8 Einführung in Numpy
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 10 Einführung in Cupy
Aktienkurs Prognose durch maschinelles Lernen ist so wahr, Numerai Signale
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken ((1) Implementierung von Blackjack)
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 9 Einführung in das Scikit-Lernen
Versuchen Sie, das Triplett des Bootsrennens vorherzusagen, indem Sie das Lernen bewerten
scikit-learn Verwendung der Zusammenfassung (maschinelles Lernen)
Kontrolle eines Sandwich-Mannes durch maschinelles Lernen ver4
Versuchen Sie, sich der Teilsumme zu stellen
Notieren Sie die Schritte zum Verständnis des maschinellen Lernens
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Eine Einführung in OpenCV für maschinelles Lernen
Ist es möglich, mit Aktienkursvorhersage durch maschinelles Lernen zu essen [Maschinelles Lernen Teil 1]
Suchen Sie nach technischen Blogs durch maschinelles Lernen mit dem Schwerpunkt "Verständlichkeit"
[Fehler] Finde Maki Horikita durch maschinelles Lernen
Vier Betriebsregeln mit maschinellem Lernen 6 [Kommerziell]
Maschinelles Lernen
Wie man Coursera / Maschinelles Lernen genießt (Woche 10)
Versuchen Sie, O'Reillys Bücher durch Clustering zu klassifizieren
Eine Einführung in Python für maschinelles Lernen
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Python & maschinelles Lernen Lernnotiz Machine: Maschinelles Lernen durch Rückausbreitung
Versuchen Sie, den Wert des Wasserstandsmessers durch maschinelles Lernen unter Verwendung der offenen Daten von Data City Sabae vorherzusagen
Versuchen Sie, Code aus 1 mit dem Framework Chainer für maschinelles Lernen (Mnist Edition) zu schreiben.
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ist es möglich, mit Aktienkursprognose durch maschinelles Lernen zu essen [Umsetzungsplan]
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)