第三方以及自定义的数据转换模块支持
第三方数据转换模块使用
当前版本支持sklearn风格数据转换模块的集成
PaddleTS提供 make_ts_transform
的方法实现对第三方数据转换模块的简单集成;
from paddlets.datasets.repository import get_dataset
dataset = get_dataset('UNI_WTH')
print(dataset)
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)
如上述例子所示,用户可以通过 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)
make_ts_transform
提供对第三方以及自定义的数据转换模块封装,对于第三方模块而言,并不是所有的数据转换模块都适用于时序数据的处理,同时对于自定义算子同样有着更多的不确定因素;因此 make_ts_transform
包括对其封装功能合法性的检查逻辑,将基于数据的输入以及输出进行合法性检查,避免一些非法模块的引入导致后续流程的异常,从而增加排查难度。