ModelArts自動學習實現中秋月餅分類
1087
2025-03-31
時序數據的異常點是指序列中存在模式不一致的點(如時序數據超出正常范圍的上/下界,突然的上升或下降,趨勢改變)。時序數據的異常檢測旨在快速準確的找到這些異常點。
代碼塊導入
在NAIE訓練平臺的JupyterLab界面操作,不需要手動添加這一部分,因為在新創建的特征工程下已經包含了導入代碼。
import os os.chdir("/home/ma-user/work/test_anomaly_detection_noah") from naie.context import Context as context from naie.datasets import data_reference from naie.feature_processing import data_flow from naie.feature_analysis import data_analysis from naie.feature_processing.expression import col, cols, cond, f_and, f_not, f_or from naie.common.data.typedefinition import StepType, ColumnRelationship, JoinType, ColumnSelector,DynamicColumnsSelectorDetails, StaticColumnsSelectorDetails, ColumnsSelectorDetails, DataProcessMode
數據準備 - 選擇數據1
在NAIE平臺上,點擊菜單欄中“數據集”下的“選擇數據”生成,然后填寫對應數據集和數據集實例參數即可。
也可以直接調用提供的生成樣例數據的代碼來生成突變類異常樣例數據。
dataset = 'air' dataset_entity = 'ts_data_analysis' datareference = data_reference.get_data_reference(dataset, dataset_entity) dataflow = data_flow.create_data_flow(datareference)
1. 超出正常范圍上/下界
檢測平穩的時序數據時序數據是否異常,給出異常判斷參考區間
參數:
data: 時序數據,可以是dataframe,數據路徑或者dataflow
columns: 待進行時序數據分析的目標列,list類型
id_column: 代表時序數據id列,沒有id列則使用默認值None,即認為整個數據為同一個id下的數據
time_column: 時序數據的時間列,用來對數據進行排序的列。沒有時間列則使用默認值None. 如果不為None,則會根據給定的時間列對時序數據排序
method: 獲取用于判斷時序數據異常的上/下界的方法,'boxplot', '3sigma’, 'and', 'or'可選;其中'and', 'or'分別表示前面二者獲取區間的交集,并集
返回:
時序數據的參考正常范圍
from naie.ts_data_analysis import AnomalyDetection
ad = AnomalyDetection(data=dataflow, columns=['col_1', 'col_2', 'col_3', 'col_4', 'col_5'], id_column='id', time_column=None) result = ad.fit(method='boxplot') # result = ad.anomaly_detection(method='3sigma') # result = ad.anomaly_detection(method='and') # result = ad.anomaly_detection(method='or') print('Anomaly detection: ') result
Anomaly detection:
Out[5]:
數據準備 - 選擇數據2
dataset = 'ts_data' dataset_entity = 'ts_anomaly' datareference = data_reference.get_data_reference(dataset, dataset_entity) dataflow = data_flow.create_data_flow(datareference)
# 獲取數據的另一方法,生成突變類異常樣例數據 from naie.feature_analysis.data_generator import generate_mutation_data df = generate_mutation_data()
2. 突然的上升或下降
檢測平穩的時序數據中突增或突降的點
參數:
top_n: 指定需要找到多少個突變點(結果可能少于這個值),整型,默認5
period_decomposition: 如果是周期數據,是否進行周期分解,增強數據的差異性, True或False,默認False
length_per_period: 如果進行周期分解,則需輸入此參數,即一個周期內的數據量,整型,默認None
threshold_filtering: 是否對篩選出的top n個點進行二次過濾,True或False, 默認False即不過濾
threshold: 如果對篩選出的top n個點進行二次過濾,則需輸入此參數作為過濾閾值,小于閾值的即認為是突變點,浮點型,默認None
返回:
最可能是突變的點的索引
from naie.ts_data_analysis import MutationAnomalyDetection
mad = MutationAnomalyDetection(df, columns=['F_x'], id_column='id', time_column=None) res = mad.fit(top_n=5, period_decomposition=False, length_per_period=None, threshold_filtering=False, threshold=None) print("Mutation anomaly detection: ") res
Mutation anomaly detection:
import matplotlib %matplotlib inline
mad._plot_mutation_anomaly(res)
NAIE SDK幫助文檔匯總請參考:
數據挖掘
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。