def characterize(self, signal, pivot, targets, settings):
    '\n      Determines the charactistics of the signal based on this algorithm.\n      @ In, signal, np.ndarray, time series with dims [time, target]\n      @ In, pivot, np.1darray, time-like parameter values\n      @ In, targets, list(str), names of targets in same order as signal\n      @ In, settings, dict, additional settings specific to this algorithm\n      @ Out, params, dict, characteristic parameters\n    '
    from sklearn.preprocessing import PolynomialFeatures
    import statsmodels.api as sm
    params = {target: {'model': {}} for target in targets}
    degree = settings['degree']
    features = PolynomialFeatures(degree=degree)
    xp = features.fit_transform(pivot.reshape((- 1), 1))
    for target in targets:
        results = sm.OLS(signal, xp).fit()
        params[target]['model']['intercept'] = results.params[0]
        for (i, value) in enumerate(results.params[1:]):
            params[target]['model'][f'coef{(i + 1)}'] = value
        params[target]['model']['object'] = results
    return params
Determines the charactistics of the signal based on this algorithm.
@ In, signal, np.ndarray, time series with dims [time, target]
@ In, pivot, np.1darray, time-like parameter values
@ In, targets, list(str), names of targets in same order as signal
@ In, settings, dict, additional settings specific to this algorithm
@ Out, params, dict, characteristic parameters
def characterize(self, signal, pivot, targets, settings):
    '\n      Determines the charactistics of the signal based on this algorithm.\n      @ In, signal, np.ndarray, time series with dims [time, target]\n      @ In, pivot, np.1darray, time-like parameter values\n      @ In, targets, list(str), names of targets in same order as signal\n      @ In, settings, dict, additional settings specific to this algorithm\n      @ Out, params, dict, characteristic parameters\n    '
    from sklearn.preprocessing import PolynomialFeatures
    import statsmodels.api as sm
    params = {target: {'model': {}} for target in targets}
    degree = settings['degree']
    features = PolynomialFeatures(degree=degree)
    xp = features.fit_transform(pivot.reshape((- 1), 1))
    for target in targets:
        results = sm.OLS(signal, xp).fit()
        params[target]['model']['intercept'] = results.params[0]
        for (i, value) in enumerate(results.params[1:]):
            params[target]['model'][f'coef{(i + 1)}'] = value
        params[target]['model']['object'] = results
    return params