第三方以及自定义的数据转换模块支持

第三方数据转换模块使用

当前版本支持sklearn风格数据转换模块的集成

PaddleTS提供 make_ts_transform 的方法实现对第三方数据转换模块的简单集成;

from paddlets.datasets.repository import get_dataset
dataset = get_dataset('UNI_WTH')
print(dataset)

UNI_WTH_DATA

from paddlets.transform import make_ts_transform
from sklearn.preprocessing import MaxAbsScaler
ts_max_abs_scaler = make_ts_transform(
    MaxAbsScaler,
    drop_origin_columns=True,
    per_col_transform=True
)
dataset = ts_max_abs_scaler.fit_transform(dataset)
print(dataset)

UNI_WTH_ABS

如上述例子所示,用户可以通过 make_ts_transform 方法,将sklearn中的 MaxAbsScaler 模块实例化成一个 ts_max_abs_scaler ,该实例实现了对 MaxAbsScaler 实例的自动化封装,在保留其核心功能基础上,支持对时序数据的处理;确保支持TSDataset类型数据的出入以及输出。用户可以像使用内置数据转换模块一样去使用基于 make_ts_transform 自动生成的实例,其具备和内置算子一样的接口以及功能,如将 ts_max_abs_scaler 加入到pipeline流程中:

from paddlets.transform import KSigma, TimeFeatureGenerator
transfrom_list = [
    KSigma("cols":["observed_a", "observed_b", "known_c", "known_d"], "k": 1),
    TimeFeatureGenerator(),
    ts_max_abs_scaler
]
for transformer in transfrom_list:
    dataset = transformer.fit_transform(dataset)

自定义数据转换模块使用

make_ts_transform 的方法通用支持对自定义数据转换模块的集成;

from sklearn.preprocessing import MaxAbsScaler
class MyMaxAbsSclaer(MaxAbsScaler):
    def fit(self, dataset):
        print("MyMaxAbsSclaer fit start!")
        return super().fit(dataset)
ts_my_max_abs_scaler = make_ts_transform(
    MyMaxAbsSclaer,
    drop_origin_columns=True,
    per_col_transform=True
)
dataset = ts_my_max_abs_scaler.fit_transform(dataset)
print(dataset)

UNI_WTH_MY_ABS

make_ts_transform 提供对第三方以及自定义的数据转换模块封装,对于第三方模块而言,并不是所有的数据转换模块都适用于时序数据的处理,同时对于自定义算子同样有着更多的不确定因素;因此 make_ts_transform 包括对其封装功能合法性的检查逻辑,将基于数据的输入以及输出进行合法性检查,避免一些非法模块的引入导致后续流程的异常,从而增加排查难度。