我偶然发现了TSfresh库,以期使时间序列数据趋于完美。文档很棒,似乎非常适合我正在从事的项目。
我想实现以下在TFresh文档的快速入门部分中共享的代码。而且看起来很简单。
from tsfresh import extract_relevant_features
feature_filtered_direct=extract_relevant_features(result,y,column_id=0,column_sort=1)
我的数据包括40万行传感器数据,每个传感器有6个传感器,分别对应15个不同的ID。我开始运行代码,但是17个小时后它仍然没有完成。我认为这个数据集可能太大,无法通过相关的功能提取器运行,因此我将其缩减为3000,然后进一步缩减为300。这些 Action 都没有使代码在一个小时内运行,而我刚结束一个小时左右的等待后,将其关闭。我也尝试了标准特征提取器
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
尝试TSfresh在其快速入门部分介绍的示例数据集。其中包括一个非常类似于我的原始数据的数据集,其数据点数量与我减少到的数据点数量大致相同。
有人对此代码有经验吗?您将如何使它更快地工作?我正在将Anaconda用于python 2.7。
更新
它似乎与多处理有关。因为我在Windows上,所以使用多进程代码需要受到保护
if __name__ == "__main__":
main()
一旦我添加
if __name__ == "__main__":
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
对于我的代码,示例数据有效。在我自己的数据集上运行extract_relevant_features函数和运行extract features模块时,我仍然遇到一些问题。好像它继续缓慢运行。我也感觉到它也与多进程卡住有关,但是没有任何错误弹出,这是无法分辨的。我花了大约30分钟的时间来提取不到我数据集的1%的要素。
最佳答案
您使用了哪个版本的tsfresh?哪个操作系统?
我们知道某些功能计算器的计算成本很高。我们对此所能做的很少。将来,我们将实现一些技巧,例如缓存,以进一步提高tsfresh的效率。
您是否尝试过使用MinimalFeatureExtractionSettings
仅计算基本功能?它仅包含基本功能,例如最大,最小,中位数等,但应运行得更快。
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
从仓库中安装最新版本。我们正在积极开发它,而主版本应包含最新和最新的版本;)。