我发现TSfresh库是一种将时间序列数据转化为特征的方法。该文档十分出色,似乎非常适合我正在开发的项目。
我想实现TFresh文档快速入门部分中分享的以下代码。看起来相当简单。
from tsfresh import extract_relevant_features
feature_filtered_direct=extract_relevant_features(result,y,column_id=0,column_sort=1)
我的数据包括40万行的传感器数据,每个id有6个传感器,我开始运行代码,17小时后它仍未完成。我想这可能是一个太大的数据集,无法通过相关特征提取器运行,因此我将其缩减到3000,然后进一步缩减到300。没有任何一项措施使代码在一个小时内运行,最终我只好在等待了一个小时左右之后关闭了它。我也尝试了标准的特征提取器。
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
除尝试TSfresh快速入门部分提供的示例数据集之外,还包括一个非常类似于我的原始数据的数据集,数据点数量减少到了大约相同水平。
有人对这段代码有任何经验吗?如何使其更快运行?我正在使用Anaconda for python 2.7。
更新看起来与多进程有关,因为我在Windows上使用多进程代码需要保护它:
if __name__ == "__main__":
main()
我添加了一次
if __name__ == "__main__":
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
对于我的代码,示例数据有效。但是,我在运行提取相关特征函数和在自己的数据集上运行提取特征模块时仍然遇到一些问题。似乎它仍然运行缓慢。我有一种感觉它与多进程冻结有关,但没有任何错误弹出,所以无法确定。在不到 1% 的数据集上提取特征需要大约 30 分钟的时间。