In [1]:
%matplotlib inline
In [2]:
import requests
from pandas.io.json import json_normalize
import pandas as pd
import numpy as np
In [3]:
sensorId = 4727
r = requests.get('http://api.gios.gov.pl/pjp-api/rest/data/getData/' + str(sensorId))
In [4]:
concentration = json_normalize(r.json())
concentrationFrame = pd.DataFrame()
concentrationFrame["dates"] = [d[u'date'] for d in concentration["values"].values.item()]
concentrationFrame["values"] = [d[u'value'] for d in concentration["values"].values.item()]
concentrationFrame = concentrationFrame.iloc[::-1]
rng = pd.date_range(start = concentrationFrame["dates"][:1].item(), periods=len(concentrationFrame), freq='H')
concentrationFrame["dates"] = rng
concentrationFrame = concentrationFrame[:-1] #removing last line
firstDatetime = concentrationFrame["dates"].iloc[0]
concentrationFrame["relativeTime"] = (concentrationFrame["dates"] - firstDatetime) / np.timedelta64(1, 'h')
In [5]:
concentrationFrame
Out[5]:
In [6]:
from tpot import TPOTRegressor
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(concentrationFrame["relativeTime"].values.reshape((concentrationFrame.shape[0],1)), concentrationFrame["values"].values,
train_size=0.75, test_size=0.25)
tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_concentration_pipeline.py')
In [7]:
ftr = pd.date_range(start = concentrationFrame["dates"][-1:].item(), periods=25, freq='H', closed='right')
predctionFrame = pd.DataFrame( {"dates" : ftr})
predctionFrame["relativeTime"] = (predctionFrame["dates"] - firstDatetime) / np.timedelta64(1, 'h')
predctionFrame["predictedValues"] = predctionFrame["relativeTime"].apply(lambda x: tpot.predict(x).item())
wholeFrame = pd.concat([concentrationFrame, predctionFrame])
wholeFrame.set_index(["dates"], inplace=True)
In [8]:
wholeFrame[["predictedValues", "values"]].plot(figsize=(15,5), grid=True)
Out[8]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: