Add al files from local folder
This commit is contained in:
108
example_timeseries.py
Normal file
108
example_timeseries.py
Normal file
@@ -0,0 +1,108 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Fri Dec 9 09:31:31 2022
|
||||
|
||||
@author: Daniel Häfliger
|
||||
|
||||
|
||||
This file shows an example of how to use the Influxclient and Influxdataframe.
|
||||
The example try to fit an prediction of a temperature of a specific measure
|
||||
with time and a given prediction of the temperature as features with time series
|
||||
forecasting depending ond them.
|
||||
|
||||
There is no data cleaning ect. in this example, its just to show how the lib
|
||||
works...
|
||||
|
||||
Be aware that you need to add a influx- and weatherapi-token and aviable datas
|
||||
to the config file. Otherwise the example, as the lib to, wont work.
|
||||
|
||||
|
||||
"""
|
||||
import pandas as pd
|
||||
import Influxdataframe as Idf
|
||||
import Influxclient as I
|
||||
import seaborn as sns
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
from sklearn.metrics import r2_score
|
||||
from sklearn.neural_network import MLPRegressor
|
||||
|
||||
|
||||
target_variable = "W_AT_5M_0"
|
||||
interval = 60
|
||||
valuesince = 10
|
||||
prediction_hours = 24
|
||||
|
||||
shift_number=4
|
||||
|
||||
df = Idf.Get_Df()
|
||||
|
||||
df = df[::12]
|
||||
|
||||
pred =I.GetPrediction(prediction_hours, interval, "temp_c")
|
||||
|
||||
|
||||
data = {
|
||||
|
||||
"y_r": pred[0],
|
||||
"y_i": pred[1],
|
||||
"d_r": pred[2],
|
||||
"d_i": pred[3],
|
||||
|
||||
"P_AT_5M_0": pred[5],
|
||||
}
|
||||
|
||||
|
||||
preddf = pd.DataFrame(data)
|
||||
|
||||
df = pd.concat([df, preddf], axis=0).reset_index(drop=True)
|
||||
|
||||
|
||||
df = Idf.ShiftTarget(df, shift_number, target_variable)
|
||||
|
||||
|
||||
|
||||
df_predict = df.dropna()
|
||||
|
||||
train_df, test_df = train_test_split(df_predict, test_size=0.3, random_state=42)
|
||||
|
||||
scaler = MinMaxScaler()
|
||||
|
||||
train_df = pd.DataFrame(scaler.fit_transform(
|
||||
train_df), columns=train_df.columns, index=train_df.index)
|
||||
test_df = pd.DataFrame(scaler.transform(
|
||||
test_df), columns=test_df.columns, index=test_df.index)
|
||||
|
||||
y = train_df[[target_variable+str(0)]]
|
||||
|
||||
X = train_df
|
||||
X.pop(target_variable+str(0))
|
||||
|
||||
X_train, X_test, y_train, y_test = train_test_split(
|
||||
X, y, test_size=0.2, random_state=42)
|
||||
|
||||
dt = MLPRegressor(activation='relu')
|
||||
dt.fit(X_train, y_train)
|
||||
|
||||
print(r2_score(y_test, dt.predict(X_test)))
|
||||
|
||||
|
||||
|
||||
for i in range(int(prediction_hours*60/interval)):
|
||||
preddf = pd.DataFrame(df.iloc[(int(df_predict.shape[0]+shift_number)-1+i)]).transpose()
|
||||
preddf = pd.DataFrame(scaler.transform(
|
||||
preddf), columns=preddf.columns, index=preddf.index)
|
||||
preddf.pop(target_variable+str(0))
|
||||
at = dt.predict(preddf)
|
||||
preddf[target_variable+str(0)]=at
|
||||
newval = pd.DataFrame(scaler.inverse_transform(preddf))
|
||||
df.at[(int(df_predict.shape[0]+shift_number)-1+i), target_variable+str(0)] = newval.at[0, 5]
|
||||
|
||||
for j in range(shift_number):
|
||||
df.at[int(df_predict.shape[0]+shift_number)+i, target_variable+str(j+1)] = df.at[int(df_predict.shape[0]+shift_number)-1+i, target_variable+str(j)]
|
||||
|
||||
|
||||
|
||||
|
||||
sns.lineplot(df.index, df[target_variable+str(0)])
|
||||
|
||||
Reference in New Issue
Block a user