我遇到了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()有關,嘗試在自引導完成之前開始一個新進程。不知道這意味着什麼 –