mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 08:55:15 +00:00
mypy, req
This commit is contained in:
parent
e0bdbdcb81
commit
3121490a23
@ -12,13 +12,13 @@ import numpy as np
|
|||||||
import requests
|
import requests
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import Field, ValidationError
|
from pydantic import Field, ValidationError
|
||||||
|
from statsmodels.tsa.holtwinters import ExponentialSmoothing
|
||||||
|
|
||||||
from akkudoktoreos.core.logging import get_logger
|
from akkudoktoreos.core.logging import get_logger
|
||||||
from akkudoktoreos.core.pydantic import PydanticBaseModel
|
from akkudoktoreos.core.pydantic import PydanticBaseModel
|
||||||
from akkudoktoreos.prediction.elecpriceabc import ElecPriceDataRecord, ElecPriceProvider
|
from akkudoktoreos.prediction.elecpriceabc import ElecPriceDataRecord, ElecPriceProvider
|
||||||
from akkudoktoreos.utils.cacheutil import cache_in_file
|
from akkudoktoreos.utils.cacheutil import cache_in_file
|
||||||
from akkudoktoreos.utils.datetimeutil import to_datetime, to_duration
|
from akkudoktoreos.utils.datetimeutil import to_datetime, to_duration
|
||||||
from statsmodels.tsa.holtwinters import ExponentialSmoothing
|
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
@ -122,18 +122,18 @@ class ElecPriceAkkudoktor(ElecPriceProvider):
|
|||||||
self.update_datetime = to_datetime(in_timezone=self.config.timezone)
|
self.update_datetime = to_datetime(in_timezone=self.config.timezone)
|
||||||
return akkudoktor_data
|
return akkudoktor_data
|
||||||
|
|
||||||
def cap_outliers(data: np.ndarray, sigma: int = 2) -> np.ndarray:
|
def _cap_outliers(self, data: np.ndarray, sigma: int = 2) -> np.ndarray:
|
||||||
mean = data.mean()
|
mean = data.mean()
|
||||||
std = data.std()
|
std = data.std()
|
||||||
lower_bound = mean - sigma * std
|
lower_bound = mean - sigma * std
|
||||||
upper_bound = mean + sigma * std
|
upper_bound = mean + sigma * std
|
||||||
capped_data = data.clip(lower=lower_bound, upper=upper_bound)
|
capped_data = data.clip(min=lower_bound, max=upper_bound)
|
||||||
return capped_data
|
return capped_data
|
||||||
|
|
||||||
def predict_ets(
|
def _predict_ets(
|
||||||
history: np.ndarray, seasonal_periods: int, prediction_hours: int
|
self, history: np.ndarray, seasonal_periods: int, prediction_hours: int
|
||||||
) -> np.ndarray:
|
) -> np.ndarray:
|
||||||
clean_history = cap_outliers(history)
|
clean_history = self._cap_outliers(history)
|
||||||
model = ExponentialSmoothing(
|
model = ExponentialSmoothing(
|
||||||
clean_history, seasonal="add", seasonal_periods=seasonal_periods
|
clean_history, seasonal="add", seasonal_periods=seasonal_periods
|
||||||
).fit()
|
).fit()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user