|
@@ -1,51 +0,0 @@ |
|
|
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) |
|
|
|
|
|
|
|
|
|