如何将自定义时间序列传入pyunicorn.timeseries.surrogates?
pyunicorn Surrogates模块自定义时间序列传入方法
报错原因
两种错误写法的问题本质:
- 直接通过类名调用实例方法
Surrogates.white_noise_surrogates(Data_2)时,没有完成类的实例化,参数位置错位,触发缺少必填位置参数的报错。 Data_2是本地加载的numpy数组,不是Surrogates类的内置属性,Surrogates.Data_2的写法完全不符合类的调用逻辑,因此触发属性不存在的报错。官方示例中的SmallTestData()是模块内置的测试数据集生成方法,和外部加载的自定义数据无关。
正确操作流程
pyunicorn的Surrogates类要求输入的时间序列为二维numpy数组,形状格式为(变量数量, 时间点总数),单列txt存储的单变量时间序列加载后是一维数组,需要先调整形状再传入。
- 补全numpy依赖导入
- 加载本地txt数据,调整数组形状符合接口要求
- 传入处理好的数组实例化Surrogates对象
- 调用实例下的对应代理生成方法即可
可直接运行的参考代码
import numpy as np from pyunicorn.timeseries import Surrogates # 加载本地单列时间序列文件 Data_2 = np.loadtxt("/path-to-data.txt") # 单变量序列调整为(1, 时间点数量)的二维格式 ts = Data_2.reshape(1, -1) # 实例化代理生成对象 surrogate_generator = Surrogates(original_data=ts) # 生成对应类型的代理序列 # 白噪声代理 white_surrogates = surrogate_generator.white_noise_surrogates() # 相关噪声代理 corr_surrogates = surrogate_generator.correlated_noise_surrogates()
补充说明
如需批量生成多组代理,可在调用代理方法时传入
n_surrogates参数指定数量,例如surrogate_generator.white_noise_surrogates(n_surrogates=20)即可生成20组同维度的代理时间序列。如果是多列存储的多变量时间序列,加载后确认数组形状为(变量数, 时间点总数)即可直接传入,无需reshape操作。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

