我遇到了TSfresh库,以此来构建时间序列数据。这些文档非常棒,它看起来非常适合我正在开发的项目。用于python的TSFRESH库处理时间过长
我想实现在TFresh文档的快速入门部分中共享的以下代码。这似乎很简单。
from tsfresh import extract_relevant_features
feature_filtered_direct=extract_relevant_features(result,y,column_id=0,column_sort=1)
我的数据包括400000行传感器数据,每个传感器数据有6个传感器,用于15个不同的ID。我开始运行代码,17个小时后还没有完成。我认为这可能是一个太大的数据集通过相关的特征提取器运行,所以我把它缩小到3000,然后再下降到300.这些操作都没有让代码运行一个小时,我刚刚结束在等待一个小时左右后关闭它。我试过的标准特征提取以及
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
随着试图说TSfresh呈现在他们的快速启动部分的示例数据集。其中包括一个与我的原始数据非常相似的数据集,其数据点的数量与我减少的数据点大致相同。
有没有人有这段代码的经验?你会如何让它工作得更快?我为python 2.7使用Anaconda。
更新 它似乎与多处理有关。因为我是在Windows上,使用多进程的代码需要由
if __name__ == "__main__":
main()
进行保护。一旦我加入
if __name__ == "__main__":
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
我的代码,示例数据的工作。我仍然在运行extract_relevant_features函数并在我自己的数据集上运行提取功能模块时遇到了一些问题。似乎它继续缓慢运行。我也有一种感觉,它与多进程冻结有关,但没有任何错误出现,无法分辨。它花费了我大约30分钟的时间来运行提取少于我数据集1%的特征。
当我从控制台运行脚本时,我收到一些有趣的错误消息,似乎并没有在Anaconda中显示。这些错误消息是在不断的循环中,这可以解释为什么函数需要很长时间来执行(无限)。产生的RuntineError与freeze_support()有关,尝试在自引导完成之前开始一个新进程。不知道这意味着什么 –