[PYTHON] Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2

Einführung

Es ist lange her, dass ich zuvor mit dem gleichnamigen Titel gepostet habe, und es wird ein wenig reif, also werde ich es erneut posten.

Nachtrag

Bitte lesen Sie den folgenden Artikel, der am 22.12.2017 erstellt wurde. Stromverbrauchsprognose mit TensorFlow mit Keras

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

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

Wenn Sie die URL ändern, können Sie auch die Daten von 2014 abrufen.

http://www.tepco.co.jp/forecast/html/images/juyo-2014.csv

Die heruntergeladenen Daten sind eine CSV mit Datum, Uhrzeit und tatsächlicher Leistung.

Übrigens scheint es, dass Sie es auch mit dem folgenden Befehl erhalten können.

python


$ curl -O http://www.tepco.co.jp/forecast/html/images/juyo-2014.csv
$ curl -O http://www.tepco.co.jp/forecast/html/images/juyo-2016.csv

Temperatur

Laden Sie nach wie vor frühere Wetterdaten von der Meteorologischen Agentur herunter.

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

Der Punkt ist "Tokio", die Elemente sind "Stundenwert" und "Temperatur", und der Zeitraum ist 2013/12/31 bis 2015/1/1 und 2015/12/31 bis 2017/1/1, data-2014.csv, Speichern Sie es als Daten-2016.csv. Der Grund für die Wahl eines etwas längeren Zeitraums besteht darin, den Zeitraum später einzugrenzen.

Die heruntergeladenen Daten sind CSV-Daten, die Daten wie Datum und Uhrzeit, Temperatur, Qualitätsinformationen und Homogenitätsnummer enthalten.

Übrigens scheint es, dass es normalerweise schnell von der Website heruntergeladen werden kann.

Daten lesen

Bibliothek

python


import pandas as pd
import numpy as np
import datetime as dt
import math

Energienachfrage

Laden Sie zunächst die Leistungsdaten 2014.

python


filename = "juyo-2014.csv"

#Der Zeichencode lautet Shift JIS, überspringt unnötige Zeilen und liest
df = pd.read_csv(filename,encoding="SHIFT-JIS",skiprows=2)

#Spaltennamen konvertieren
df.columns = ["DATE","TIME","KW"]

#Da Datums- und Uhrzeitdaten getrennt sind, verbinden Sie sie zu einer, konvertieren Sie sie in einen Datums- und Uhrzeittyp und geben Sie sie als Index an.
df.index = df.index.map(lambda x: dt.datetime.strptime(df.loc[x].DATE + " " + df.loc[x].TIME,"%Y/%m/%d %H:%M"))

#Erhalten Sie monatliche Daten
df["MONTH"] = df.index.month

#Tagesdaten abrufen
df["WEEK"] = df.index.weekday

#Zeitdaten abrufen
df["HOUR"] = df.index.hour

df_kw = df

Temperatur

Laden Sie als Nächstes die Temperaturdaten für 2014.

python


filename = "data-2014.csv"

#Der Zeichencode lautet Shift JIS, überspringt unnötige Zeilen und erhält nur die erforderlichen 2 Spalten
df = pd.read_csv(filename,encoding="SHIFT-JIS",skiprows=4)[[0,1]]

#Spaltennamen konvertieren
df.columns = ["DATE","TEMP"]

#Konvertieren Sie Datums- und Uhrzeitdaten in Datums- und Uhrzeittyp und geben Sie sie als Index an
df.index = df.index.map(lambda x: dt.datetime.strptime(df.loc[x].DATE,"%Y/%m/%d %H:%M:%S"))

df_temp = df

Kombinieren Sie Leistungsbedarfs- und Temperaturdaten

python


d1 = df_kw.index.min()
d2 = df_kw.index.max()

df_kw["TEMP"] = df_temp.ix[d1:d2].TEMP

Datenverarbeitung

Erfasst Eingabedaten und Ausgabedaten, die für maschinelles Lernen verwendet werden. Da wir den Strombedarf vorhersagen, werden wir die KW-Spalte für die Ausgabe und die MONTH-, WEEK-, HOUR- und TEMP-Spalten für die Eingabe verwenden.

python


#Angabe der für die Eingabe verwendeten Datenzeichenfolge
X_cols = ["MONTH","WEEK","HOUR","TEMP"]

#Angabe der für die Ausgabe verwendeten Datenzeichenfolge
y_cols = ["KW"]

#Erfassung von Eingabe- / Ausgabedaten
X = df_kw[X_cols].as_matrix().astype('float')
y = df_kw[y_cols].as_matrix().astype('int').flatten()

Teilen Sie in Trainingsdaten und Validierungsdaten.

python


from sklearn import cross_validation

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=.1, random_state=42)

Normalisiert die Eingabedaten.

python


from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
scaler.fit(X_train)

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

Lernen

Lernen Sie mit einem Regressionsmodell.

python


from sklearn.ensemble import RandomForestRegressor

model = RandomForestRegressor()
model.fit(X_train, y_train)

Prognose

Berechnen Sie die Punktzahl anhand der geteilten Testdaten.

python


print(model.score(X_test,y_test))

Die Punktzahl war "0,91601162513664502" (^ - ^)

Bestätigung der Prognoseergebnisse

Lassen Sie uns das Vorhersageergebnis und die tatsächlichen Daten grafisch darstellen und überprüfen.

python


#Vorhersageergebnis
result = model.predict(X_test)

#In Datenrahmen konvertieren
df_result = pd.DataFrame({
    "y_test":y_test,
    "result":result
})

#Diagrammbibliothek
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt

#Diagrammzeichnung
df_result.plot(figsize=(15, 3))

Unknown.png

Es sieht so aus, als würde es schlagen, aber ich bin mir nicht sicher, wie es ist.

Reduzieren Sie die Anzahl der Daten und bestätigen Sie erneut.

python


#Diagrammzeichnung
df_result[:20].plot(figsize=(15, 3))

Unknown.png

Ist es nicht ein gutes Gefühl!

Prognose anhand der Daten für 2016

Daten lesen

Laden Sie die Daten für 2016 nach dem gleichen Verfahren wie für die Daten für 2014.

python


#Energienachfrage
filename = "juyo-2016.csv"

df = pd.read_csv(filename,encoding="SHIFT-JIS",skiprows=2)
df.columns = ["DATE","TIME","KW"]
df.index = df.index.map(lambda x: dt.datetime.strptime(df.loc[x].DATE + " " + df.loc[x].TIME,"%Y/%m/%d %H:%M"))
df["MONTH"] = df.index.month
df["WEEK"] = df.index.weekday
df["HOUR"] = df.index.hour

#Nur für April verwenden
df_kw = df[df.index.month == 4]

#Temperatur
filename = "data-2016.csv"

df = pd.read_csv(filename,encoding="SHIFT-JIS",skiprows=4)[[0,1]]
df.columns = ["DATE","TEMP"]
df.index = df.index.map(lambda x: dt.datetime.strptime(df.loc[x].DATE,"%Y/%m/%d %H:%M:%S"))

df_temp = df

#Datenverbindung
d1 = df_kw.index.min()
d2 = df_kw.index.max()
df_kw["TEMP"] = df_temp.ix[d1:d2].TEMP

Datenverarbeitung

python


#Erfassung von Eingabe- / Ausgabedaten
X = df_kw[X_cols].as_matrix().astype('float')
y = df_kw[y_cols].as_matrix().astype('int').flatten()

X_test = scaler.transform(X)
y_test = y

Prognose

Prognostizieren und berechnen Sie die Ergebnisse anhand eines Modells, das mit Daten aus dem Jahr 2014 trainiert wurde.

python


model.score(X_test,y_test)

Das Ergebnis war "0,82435418225963963", was etwas niedriger war.

Bestätigung der Prognoseergebnisse

python


#Vorhersageergebnis
result = model.predict(X_test)

#In Datenrahmen konvertieren
df_result = pd.DataFrame({
    "y_test":y_test,
    "result":result
})

#Diagrammzeichnung
df_result.plot(figsize=(15, 3))

Unknown.png

Ich brauche etwas mehr Einfallsreichtum (-_-;)

Recommended Posts

Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Maschinelles Lernen mit Pokemon gelernt
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Maschinelles Lernen mit Python! Vorbereitung
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Maschinelles Lernen Minesweeper mit PyTorch
Beginnend mit maschinellem Python-Lernen
Versuchen Sie es mit Kaggle leicht maschinell
Maschinelles Lernen mit Nogisaka 46 und Keyakizaka 46 Teil 1 Einführung
Feature Engineering für maschinelles Lernen ab Teil 3 Google Colaboratory-Scale
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 2)
Ich habe maschinelles Lernen mit liblinear versucht
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Versuchen Sie es mit TensorFlow Part 2
SVM versucht maschinelles Lernen mit Scikit-Learn
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 1)
Quanteninspiriertes maschinelles Lernen mit Tensornetzwerken
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Empfehlung von Manga durch maschinelles Lernen Teil 1 Lassen Sie uns zunächst teilen, ohne über irgendetwas nachzudenken
Maschinelles Lernen
Verstärken Sie Bilder für maschinelles Lernen mit Python
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Eine Geschichte über maschinelles Lernen mit Kyasuket
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Maschinelles Lernen mit Pytorch in Google Colab
Aufbau einer KI / maschinellen Lernumgebung mit Python
EV3 x Pyrhon Maschinelles Lernen Teil 3 Klassifizierung
Maschinelles Lernen eines jungen Ingenieurs Teil 1
Kann maschinelles Lernen parallele Vierecke vorhersagen? (1) Kann es extern eingefügt werden?
Report_Deep Learning (Teil 2)
Report_Deep Learning (Teil 1)
Report_Deep Learning (Teil 1)
Feature Engineering für maschinelles Lernen Beginnend mit Teil 2 Google Colaboratory-Logistic Conversion und Box-Cox Conversion
Vorhersage kurzlebiger Arbeiten von Weekly Shonen Jump durch maschinelles Lernen (Teil 2: Lernen und Bewertung)
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 2
EV3 x Pyrhon Maschinelles Lernen Teil 1 Umgebungskonstruktion
EV3 x Python Maschinelles Lernen Teil 2 Lineare Regression
Report_Deep Learning (Teil 2)
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 3
[Python] Sammeln Sie Bilder mit Icrawler für maschinelles Lernen [1000 Blatt]
Maschinelles Lernen von Grund auf neu (maschinelles Lernen mit Kaggle)
Maschinelles Lernen eines jungen Ingenieurs Teil 2
[Memo] Maschinelles Lernen
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Klassifikation des maschinellen Lernens
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Vorhersage kurzlebiger Arbeiten von Weekly Shonen Jump durch maschinelles Lernen (Teil 1: Datenanalyse)
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Beispiel für maschinelles Lernen
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Lernen Sie das kollaborative Filtern zusammen mit Coursera-Materialien für maschinelles Lernen
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.