Strojové učení může být velmi užitečné v oblasti fotovoltaiky pro předpověď výkonu solárních panelů. Jednou z běžných aplikací strojového učení v tomto kontextu je předpovídání výroby solární energie na základě historických dat a meteorologických předpovědí. Následující příklad je zjednodušenou ukázkou toho, jak by mohla být taková prediktivní analýza provedena v Pythonu s použitím knihovny Scikit-learn.
Předpokládejme, že máme dataset, který obsahuje historická data o výrobě energie solárními panely, teplotě a jasu.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
# Vytvoříme DataFrame z Pythonovského slovníku
data = {
'Temperature': [22.4, 23.5, 21.6, 22.8, 23.9, 21.7, 22.5, 23.6, 21.8, 22.9],
'Brightness': [89, 88, 92, 90, 87, 91, 89, 88, 92, 90],
'Energy_Production': [200, 210, 220, 205, 215, 225, 210, 220, 230, 215]
}
df = pd.DataFrame(data)
# Rozdělíme data na vstupní a cílové hodnoty
X = df[['Temperature', 'Brightness']]
y = df['Energy_Production']
# Rozdělíme data na trénovací a testovací množinu
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Vytvoříme model pomocí náhodných lesů
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Provedeme predikci na testovacích datech
y_pred = model.predict(X_test)
# Vypíšeme skutečné a předpovězené hodnoty výroby energie pro prvních 10 záznamů v testovací množině
for actual, predicted in list(zip(y_test, y_pred))[:10]:
print(f'Skutečná výroba: {actual}, Předpovězená výroba: {predicted}')
Pamatujte, že tento kód je velmi zjednodušený a slouží pouze jako demonstrace. Skutečný přístup k modelování by vyžadoval mnohem větší množství dat, předzpracování dat, ladění modelu, validaci a další kroky.
Predikce, často také nazývaná inferencí, je proces, při kterém využíváme natrénovaný model pro odhad výstupu na základě nových, dříve neviděných vstupních dat. Ve strojovém učení se proces učení a predikce obvykle dělí na dvě samostatné fáze.
Fáze učení:
V této fázi je model “učen” pomocí trénovacích dat. Trénovací data jsou skupina příkladů, které modelu poskytujeme, aby se naučil vzorce a souvislosti mezi vstupními a výstupními daty. Například v kontextu předpovědi výroby energie z fotovoltaických panelů, vstupními daty by mohla být teplota a jas, zatímco výstupními daty je množství vyrobené energie.
Fáze predikce:
Po natrénování modelu přichází fáze predikce. V této fázi používáme natrénovaný model na nová, neviděná data. Cílem je použít model, který jsme natrénovali na trénovacích datech, k odhadu výstupu na základě vstupních dat. Tato fáze se obvykle provádí na tzv. testovacích datech, což jsou data, která model během fáze učení neviděl.
V našem případě model využívá vzorce a souvislosti, které se naučil z teploty a jasu na trénovacích datech, k odhadu výroby energie na základě nových teplot a jasu. Předpovězené hodnoty jsou pak porovnány se skutečnými hodnotami, aby bylo možné vyhodnotit přesnost a účinnost modelu.
Jednou z hlavních výzev při strojovém učení je zabránit modelu v přeučení. Přeučený model je model, který se “příliš dobře” naučil trénovací data a přizpůsobil se jim tak dokonale, že je nedokáže efektivně zobecnit na nová data. To znamená, že přesnost na trénovacích datech může být velmi vysoká, zatímco přesnost na testovacích datech je nízká.
Výsledek tohoto kódu je natrénovaný model strojového učení, který je schopný predikovat množství energie vyrobené fotovoltaickými panely na základě teploty a jasu.
Kód vytváří jednoduchý lineární regresní model pomocí knihovny scikit-learn, který je trénován na vzorových datech reprezentujících teplotu, jas a výrobu energie.
Pak model používá k predikci výroby energie pro nové, neviděné hodnoty teploty a jasu (v tomto případě hodnoty 25 pro teplotu a 8 pro jas).
Výsledná predikce je vypsána na konzoli.
Pamatujte, že výsledek je zjednodušený příklad a skutečný model pro předpovědění výroby energie z fotovoltaických panelů by byl mnohem komplexnější a vyžadoval by mnoho dalších dat a sofistikovanější modelovací techniky. Navíc, kvalita predikcí bude záviset na kvalitě a množství dostupných trénovacích dat.
Chcete-li k výuce a predikci použít větší množství dat, můžete načíst tato data například z CSV souboru pomocí upraveného kódu:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
# Načteme dataset
df = pd.read_csv('solar_data.csv')
# Rozdělíme data na vstupní a cílové hodnoty
X = df[['Temperature', 'Brightness']]
y = df['Energy_Production']
# Rozdělíme data na trénovací a testovací množinu
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Vytvoříme model pomocí náhodných lesů
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Provedeme predikci na testovacích datech
y_pred = model.predict(X_test)
# Vypíšeme skutečné a předpovězené hodnoty výroby energie pro prvních 10 záznamů v testovací množině
for actual, predicted in list(zip(y_test, y_pred))[:10]:
print(f'Skutečná výroba: {actual}, Předpovězená výroba: {predicted}')