in kats/utils/cupik.py [0:0]
def fit(self, data: Any, params: Optional[Dict[str, Any]] = None, **kwargs) -> Any:
"""
This function is the external function for user to fit the pipeline
inputs:
data: a single univariate time series data or a list of multiple univariate
time series data
params: a dictionary with the extra parameters for each step. The dictionary
holds the format of {"user_defined_method_name": {"parameter": value}}
extra key word arguments:
remove: a boolean for telling the pipeline to remove outlier or not
useFeatures: a boolean for telling the pipeline whether to use TsFeatures to process
the data for sklearn models, or merely getting the features as metadata
for other usage
y: label data for fitting sklearn model, an array or a list
outputs:
data: output a single result for univariate data, or a list of results for multiple
univariate time series data fed originally in the format of a list. Determined by
the last step, the output could be processed time series data, or fitted kats/sklearn
model, etc.
"""
# Initialize a place holder for params
if params is None:
params = {}
# Judging if extra functions needed
####
self.remove = kwargs.get("remove", False) # remove outliers or not
self.useFeatures = kwargs.get(
"useFeatures", False
) # do you want to use tsfeatures as transformation or analyzer
self.y = kwargs.get("y", None)
####
# Extra parameters for specific method of each step
self.extra_fitting_params = params
if type(data) != list: # Since we support multiple timeseries in a list,
# when data is univariate, we put them in a list
self.univariate = True
data = [data]
for (
n,
s,
) in self.steps: # Iterate through each step and perform the internal fitting
# function
data = self.__fit__(n, s, data)
if (
self.univariate
): # When input data is one univariate time series, we directly
# present the output (not in a list)
return data[0]
else:
return data