日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python時間序列分析庫介紹:statsmodels、tslearn、tssearch、tsfresh

來源: 責編: 時間:2023-10-30 17:23:21 348觀看
導讀時間序列分析在金融和醫療保健等領域至關重要,在這些領域,理解隨時間變化的數據模式至關重要。在本文中,我們將介紹四個主要的Python庫——statmodels、tslearn、tssearch和tsfresh——每個庫都針對時間序列分析的不同方

時間序列分析在金融和醫療保健等領域至關重要,在這些領域,理解隨時間變化的數據模式至關重要。在本文中,我們將介紹四個主要的Python庫——statmodels、tslearn、tssearch和tsfresh——每個庫都針對時間序列分析的不同方面進行了定制。這些庫為從預測到模式識別的任務提供了強大的工具,使它們成為各種應用程序的寶貴資源。JmQ28資訊網——每日最新資訊28at.com

我們使用來自Kaggle的數據集,通過加速度計數為各種身體活動進行分析。這些活動被分為12個不同的類別,每個類別對應一個特定的身體動作,如站立、坐著、行走,或從事更有活力的活動,如慢跑和騎自行車。每個活動都記錄了一分鐘的持續時間,提供了豐富的時間序列數據源。JmQ28資訊網——每日最新資訊28at.com

用于此分析的庫有:JmQ28資訊網——每日最新資訊28at.com

# statsmodels from statsmodels.tsa.seasonal import seasonal_decompose from statsmodels.tsa.stattools import adfuller from statsmodels.graphics.tsaplots import plot_acf  #tslearn from tslearn.barycenters import dtw_barycenter_averaging  # tssearch from tssearch import get_distance_dict, time_series_segmentation, time_series_search, plot_search_distance_result  # tsfresh from tsfresh import extract_features from tsfresh.feature_selection.relevance import calculate_relevance_table from tsfresh.feature_extraction import EfficientFCParameters from tsfresh.utilities.dataframe_functions import impute

Statsmodels

從statmodels庫中,兩個基本函數在理解從x, y和z方向收集的加速度數據的特征方面起著關鍵作用。JmQ28資訊網——每日最新資訊28at.com

adfuller函數是確定時間序列信號平穩性的有力工具。通過對我們的數據進行Augmented Dickey-Fuller檢驗,可以確定加速度信號是否表現出平穩的行為,這是許多時間序列分析技術的基本要求。這個測試幫助我們評估數據是否隨時間而變化。JmQ28資訊網——每日最新資訊28at.com

def activity_stationary_test(dataframe, sensor, activity):  dataframe.reset_index(drop=True)  adft = adfuller(dataframe[(dataframe['Activity'] == activity)][sensor], autolag='AIC')  output_df = pd.DataFrame({'Values':[adft[0], adft[1], adft[4]['1%']], 'Metric':['Test Statistics', 'p-value', 'critical value (1%)']})  print('Statistics of {} sensor:/n'.format(sensor), output_df)  print()  if (adft[1] < 0.05) & (adft[0] < adft[4]['1%']):    print('The signal is stationary')  else:    print('The signal is non-stationary')

seasonal_decomposition函數提供了對時間序列數據結構的寶貴見解。它將時間序列分解為三個不同的組成部分:趨勢、季節性和殘差。這種分解使我們能夠可視化和理解加速度數據中的潛在模式和異常。JmQ28資訊網——每日最新資訊28at.com

def activity_decomposition(dataframe, sensor, activity):     dataframe.reset_index(drop=True)  data = dataframe[(dataframe['Activity'] == activity)][sensor]  decompose = seasonal_decompose(data, model='additive', extrapolate_trend='freq', period=50)  fig = decompose.plot()  fig.set_size_inches((12, 7))  fig.axes[0].set_title('Seasonal Decomposition Plot')  fig.axes[3].set_xlabel('Indices')  plt.show()

JmQ28資訊網——每日最新資訊28at.com

Tslearn

如果使用tslearn庫進行時間序列分析??梢圆捎梅指罘椒?,將連續的加速信號分解成特定長度的離散段或窗口(例如,150個數據點)。這些片段提供了行走過程中運動的顆粒視圖,并成為進一步分析的基礎。重要的是,我們在相鄰部分之間使用了50個數據點的重疊,從而可以更全面地覆蓋潛在的動態。JmQ28資訊網——每日最新資訊28at.com

template_length = 150 overlap = 50 # Adjust the overlap value as needed segments = [signal[i:i + template_length] for i in range(0, len(signal) - template_length + 1, overlap)]

JmQ28資訊網——每日最新資訊28at.com

為了從這些片段中獲得一個封裝行走典型特征的代表性模板,我們使用了dtw_barycenter_averaging函數。該方法采用動態時間規整(Dynamic Time Warping, DTW)對分割的時間序列進行對齊和平均,有效地創建了一個捕捉步行運動中心趨勢的模板。JmQ28資訊網——每日最新資訊28at.com

template_signal = dtw_barycenter_averaging(segments) template_signal = template_signal.flatten()

生成的模板為后續的分類和比較任務提供了有價值的參考,有助于基于x軸加速度的步行活動識別和分析。JmQ28資訊網——每日最新資訊28at.com

JmQ28資訊網——每日最新資訊28at.com

Tssearch

對于tssearch庫使用time_series_segmentation函數,通過動態時間規整(DTW)或其他相似性度量來識別輸入時間序列中與所提供的模板信號最相似的片段。JmQ28資訊網——每日最新資訊28at.com

該函數的主要目標是定位和提取與模板信號密切匹配的輸入時間序列片段。通過將模板信號與輸入時間序列進行比較,可以找到這些片段,該函數返回輸入時間序列中這些片段開始的位置或索引。JmQ28資訊網——每日最新資訊28at.com

segment_distance = get_distance_dict(["Dynamic Time Warping"])  segment_results = time_series_segmentation(segment_distance, template_signal, signal_np)  for k in segment_results:  plt.figure(figsize=(15, 3))  plt.plot(signal_np, color='gray')  plt.vlines(segment_results[k], np.min(signal_np)-1, np.max(signal_np) + 1, 'C1')  plt.xlabel('Indices')  plt.ylabel('Amplitude')  plt.title(k)

JmQ28資訊網——每日最新資訊28at.com

tssearch庫中還有另一個用于發現時間序列數據中的相似性和差異性的方法。首先,我們配置了一個字典dict_distances來指定搜索的距離度量。定義了兩種不同的方法。第一個,標記為“elastic”,采用動態時間規整(DTW)作為相似性度量。使用特定的參數定制DTW,例如dtw_type設置為“sub-dtw”,alpha設置為0.5,允許靈活的時間序列對齊和比較。然后是“lockstep”,它利用歐幾里得距離以一種更嚴格的方式來衡量相似性。有了這些距離配置,就可以使用time_series_search函數執行時間序列搜索,將模板信號與目標信號(signal_np)進行比較,并指定前30個匹配項的輸出。JmQ28資訊網——每日最新資訊28at.com

dict_distances = {    "elastic": {        "Dynamic Time Warping": {            "function": "dtw",            "parameters": {"dtw_type": "sub-dtw", "alpha": 0.5},        }    },    "lockstep": {        "Euclidean Distance": {            "function": "euclidean_distance",            "parameters": "",      }    } }  result = time_series_search(dict_distances, template_signal, signal_np, output=("number", 30)) plot_search_distance_result(result, signal_np)

JmQ28資訊網——每日最新資訊28at.com

JmQ28資訊網——每日最新資訊28at.com

這是一種時間序列聚類的簡單的方法,并且可解釋性很強。JmQ28資訊網——每日最新資訊28at.com

Tsfresh

tsfresh庫則是一個很好的自動化特征提取過程的工具。effentfcparameters()定義了一組提取設置,它指定了特征提取參數和配置。這些設置可以控制在提取過程中計算哪些特征。然后就可以使用extract_features函數應用進行特征的提取。這里應該將“Activity”列作為標識符列,并提供了特征提取參數。重要的是,該庫可以對缺失值(NaN)的特征進行自動刪除,結果保存在x_extract中,是從時間序列數據中提取的大量特征集合。Tsfresh簡化了通常復雜且耗時的特征工程過程,為時間序列分析提供了寶貴的資源。JmQ28資訊網——每日最新資訊28at.com

extraction_settings = EfficientFCParameters() X_extracted = extract_features(final_df, column_id='Activity',                      default_fc_parameters=extraction_settings,                      # we impute = remove all NaN features automatically                      impute_functinotallow=impute, show_warnings=False)  X_extracted= pd.DataFrame(X_extracted, index=X_extracted.index, columns=X_extracted.columns)  values = list(range(1, 13)) y = pd.Series(values, index=range(1, 13))  relevance_table_clf = calculate_relevance_table(X_extracted, y) relevance_table_clf.sort_values("p_value", inplace=True) relevance_table_clf.head(10)

JmQ28資訊網——每日最新資訊28at.com

top_features = relevance_table_clf["feature"].head(10) x_features = X_extracted[top_features]

JmQ28資訊網——每日最新資訊28at.com

總結

本文向您介紹了時間序列分析的四個基本Python庫:statmodels、tslearn、tssearch和tsfresh。時間序列分析是金融和醫療保健等各個領域的重要工具,在這些領域,我們需要了解數據隨時間的變化趨勢,以便做出明智的決策和預測。JmQ28資訊網——每日最新資訊28at.com

每個庫都專注于時間序列分析的不同方面,選擇哪個庫取決于具體問題。通過結合使用這些庫,可以處理各種與時間相關的挑戰,從預測財務趨勢到對醫療保健中的活動進行分類。當要開始自己的時間序列分析項目時,請記住這些庫,結合著使用它們可以幫助你解決很多的實際問題。JmQ28資訊網——每日最新資訊28at.com

kaggle數據集:https://www.kaggle.com/datasets/gaurav2022/mobile-health/discussion/375938JmQ28資訊網——每日最新資訊28at.com


JmQ28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-15854-0.htmlPython時間序列分析庫介紹:statsmodels、tslearn、tssearch、tsfresh

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Git詳細使用教程,你學會了嗎?

下一篇: 可以提取圖像文本的五大 Python 庫

標簽:
  • 熱門焦點
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰略發布會結束之后,Redmi總經理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 為什么你不應該使用Div作為可點擊元素

    按鈕是為任何網絡應用程序提供交互性的最常見方式。但我們經常傾向于使用其他HTML元素,如 div span 等作為 clickable 元素。但通過這樣做,我們錯過了許多內置瀏覽器的功能。
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己&ldquo;當家&rdquo;的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 到手價3099元起!iQOO Neo8 Pro今日首銷:安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
  • 上海舉辦人工智能大會活動,建設人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術、新產品、新應用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發展盛典人工
Top 主站蜘蛛池模板: 吉首市| 濮阳县| 阿克| 墨竹工卡县| 宜川县| 长阳| 阜宁县| 项城市| 峨边| 遂溪县| 房产| 佛冈县| 保德县| 那坡县| 嫩江县| 九寨沟县| 浦东新区| 德昌县| 安陆市| 崇州市| 平乡县| 新民市| 登封市| 金川县| 东城区| 宁蒗| 红原县| 华安县| 虹口区| 吴江市| 平潭县| 井冈山市| 修武县| 布尔津县| 三穗县| 辛集市| 同德县| 武汉市| 攀枝花市| 东光县| 鲁甸县|