Add al files from local folder

This commit is contained in:
dhafli01
2022-12-09 11:20:16 +01:00
parent a69d15806c
commit f4b2a7a379
7 changed files with 479 additions and 0 deletions

108
example_timeseries.py Normal file
View 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)])