2016-12-14 337 views
3

我遇到了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%的特征。

+0

当我从控制台运行脚本时,我收到一些有趣的错误消息,似乎并没有在Anaconda中显示。这些错误消息是在不断的循环中,这可以解释为什么函数需要很长时间来执行(无限)。产生的RuntineError与freeze_support()有关,尝试在自引导完成之前开始一个新进程。不知道这意味着什么 –

回答

3

您使用了哪个版本的tsfresh?哪个OS?

我们意识到某些功能计算器的高计算成本。我们能做的更少。未来我们将实施一些像缓存这样的技巧来进一步提高tsfresh的效率。

您是否试过仅使用MinimalFeatureExtractionSettings来计算基本特征?它只包含诸如Max,Min,Median等基本功能,但应该以更快的方式运行。

from tsfresh.feature_extraction import MinimalFeatureExtractionSettings 
extracted_features = extract_features(timeseries, column_id="id", column_sort="time", feature_extraction_settings = MinimalFeatureExtractionSettings()) 

此外,安装从pip install git+https://github.com/blue-yonder/tsfresh回购的最新版本可能是一个好主意。我们正在积极开发它,主人应该包含最新和最新的版本;)。

+0

我目前正在使用Windows 10上的版本0.3.0。我只在约197000行数据上运行了提取特征模块,大约需要830次。它的特征选择模块在运行时似乎需要更长的时间。功能的完整补充在我的分析中非常有用。将这种操作扩展到数百万行将占用相当大的计算能力。 –

+0

我们刚刚发布了0.4.0版本,它包含一个ReasonableFeatureExtraction设置对象,该对象将提取除两个熵特征以外的所有对象。有了这个,我能够处理长度为1000的100000个时间序列,因此在i6800k(6个核心,4.3 Ghz)的情况下,大约3个小时能处理1亿行。另外我使用parallelization =“per_sample” – MaxBenChrist