|
- import numpy as np
-
- from tods.sk_interface.feature_analysis.StatisticalMaximum_skinterface import StatisticalMaximumSKI
- from tods.sk_interface.detection_algorithm.KNN_skinterface import KNNSKI
- from tods.sk_interface.data_ensemble.Ensemble_skinterface import EnsembleSKI
- from tods.sk_interface.utils.data import generate_3D_data, load_sys_data, generate_sys_feature
-
- # Generate 3D data (n, T, d), n: system number, T: time, d: dimension
-
- # n_sys = 5
- # X_train, y_train, X_test, y_test = generate_3D_data(n_sys=n_sys,
- # n_train=1000,
- # n_test=1000,
- # n_features=3,
- # contamination=0.1)
-
- X_train, y_train, sys_info_train = load_sys_data('../../datasets/anomaly/system_wise/sample/train.csv',
- '../../datasets/anomaly/system_wise/sample/systems')
- X_test, y_test, sys_info_test = load_sys_data('../../datasets/anomaly/system_wise/sample/train.csv',
- '../../datasets/anomaly/system_wise/sample/systems')
- n_sys = sys_info_train['sys_num']
-
- # feature analysis algorithms
- stmax = StatisticalMaximumSKI(system_num=n_sys)
-
- # OD algorithms
- detection_module = KNNSKI(contamination=0.1, system_num=n_sys)
-
- # ensemble model
- ensemble_module = EnsembleSKI()
-
- # Fit the feature analysis algorithms
- X_train = stmax.produce(X_train)
- X_test = stmax.produce(X_test)
-
- # Fit the detector
- detection_module.fit(X_train)
- sys_ts_score = detection_module.predict_score(X_test) # shape (n, T, 1)
-
- # generate sys_feature based on the time-series anomaly score
- sys_feature = generate_sys_feature(sys_ts_score) # shape (T, n)
-
- print(sys_feature.shape)
- print(sys_feature.ndim)
-
- # Ensemble the time series outlier socre for each system
- ensemble_module.fit(sys_feature)
- sys_score = ensemble_module.predict(sys_feature)
-
- print(sys_score)
|