| @@ -0,0 +1,51 @@ | |||||
| 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) | |||||
| @@ -3,3 +3,4 @@ from tods.data_processing import * | |||||
| from tods.timeseries_processing import * | from tods.timeseries_processing import * | ||||
| from tods.feature_analysis import * | from tods.feature_analysis import * | ||||
| from tods.detection_algorithm import * | from tods.detection_algorithm import * | ||||
| from tods.sk_interface import * | |||||
| @@ -0,0 +1,3 @@ | |||||
| from tods.sk_interface.data_ensemble import * | |||||
| from tods.sk_interface.feature_analysis import * | |||||
| from tods.sk_interface.detection_algorithm import * | |||||
| @@ -0,0 +1,142 @@ | |||||
| from d3m import container | |||||
| import numpy as np | |||||
| def get_default_hyperparameter(primitive, hyperparameter): | |||||
| # check if input legal hyperparameter | |||||
| hyperparam_buf = list(primitive.metadata.get_hyperparams().defaults().keys()) | |||||
| hyperparam_input = list(hyperparameter.keys()) | |||||
| if not set(hyperparam_buf) > set(hyperparam_input): | |||||
| invalid_hyperparam = list(set(hyperparam_input) - set(hyperparam_buf)) | |||||
| raise TypeError(primitive.__name__ + ' got unexpected keyword argument ' + str(invalid_hyperparam)) | |||||
| hyperparams_class = primitive.metadata.get_hyperparams() | |||||
| hyperparams = hyperparams_class.defaults() | |||||
| # print("items ", type(hyperparameter.items())) | |||||
| if len(hyperparameter.items()) != 0: | |||||
| # for key, value in hyperparameter.items(): | |||||
| hyperparams = hyperparams.replace(hyperparameter) | |||||
| return hyperparams | |||||
| class BaseSKI: | |||||
| def __init__(self, primitive, system_num=1, **hyperparameter): | |||||
| self.fit_available = True if 'fit' in primitive.__dict__ else False | |||||
| self.predict_available = True if 'produce' in primitive.__dict__ else False | |||||
| self.predict_score_available = True if 'produce_score' in dir(primitive) else False | |||||
| self.produce_available = True if 'produce' in primitive.__dict__ else False | |||||
| # print(primitive, self.fit_available, self.predict_available, self.predict_score_available, self.produce_available) | |||||
| self.system_num = system_num | |||||
| hyperparams = get_default_hyperparameter(primitive, hyperparameter) | |||||
| if system_num >= 1: | |||||
| self.primitives = [primitive(hyperparams=hyperparams) for sys_idx in range(system_num)] | |||||
| else: | |||||
| raise AttributeError('BaseSKI must have positive system_num.') | |||||
| #print(hyperparams) | |||||
| def fit(self, data): | |||||
| if not self.fit_available: | |||||
| raise AttributeError('type object ' + self.__class__.__name__ + ' has no attribute \'fit\'') | |||||
| data = self._sys_data_check(data) | |||||
| for sys_idx, primitive in enumerate(self.primitives): | |||||
| sys_data = data[sys_idx] | |||||
| sys_data = self._transform(sys_data) | |||||
| primitive.set_training_data(inputs=sys_data) | |||||
| primitive.fit() | |||||
| return | |||||
| def predict(self, data): | |||||
| if not self.predict_available: | |||||
| raise AttributeError('type object ' + self.__class__.__name__ + ' has no attribute \'predict\'') | |||||
| data = self._sys_data_check(data) | |||||
| output_data = self._forward(data, 'produce') | |||||
| return output_data | |||||
| def predict_score(self, data): | |||||
| if not self.predict_available: | |||||
| raise AttributeError('type object ' + self.__class__.__name__ + ' has no attribute \'predict_score\'') | |||||
| data = self._sys_data_check(data) | |||||
| output_data = self._forward(data, 'produce_score') | |||||
| return output_data | |||||
| def produce(self, data): #produce function for other primitive types | |||||
| if not self.produce_available: | |||||
| raise AttributeError('type object ' + self.__class__.__name__ + ' has no attribute \'produce\'') | |||||
| data = self._sys_data_check(data) | |||||
| output_data = self._forward(data, 'produce') | |||||
| return output_data | |||||
| def _sys_data_check(self, data): | |||||
| if self.system_num == 1: | |||||
| if type(data) is np.ndarray and data.ndim == 2: | |||||
| data = [data] # np.expand_dims(data, axis=0) | |||||
| else: | |||||
| raise AttributeError('For system_num = 1, input data should be 2D numpy array.') | |||||
| elif self.system_num > 1: | |||||
| if type(data) is list and len(data) == self.system_num: | |||||
| for ts_data in data: | |||||
| if type(ts_data) is np.ndarray and ts_data.ndim == 2: | |||||
| continue | |||||
| else: | |||||
| raise AttributeError('For system_num > 1, each element of input list should be 2D numpy arrays.') | |||||
| else: | |||||
| raise AttributeError('For system_num > 1, input data should be the list of `system_num` 2D numpy arrays.') | |||||
| # if len(data.shape) != 3: | |||||
| # raise AttributeError('For system_num > 1, input data should have 3 dimensions.') | |||||
| # elif self.system_num != data.shape[0]: | |||||
| # raise AttributeError('For system_num > 1, data.shape[0] must equal system_num.') | |||||
| return data | |||||
| def _forward(self, data, method): | |||||
| output_data = [] | |||||
| for sys_idx, primitive in enumerate(self.primitives): | |||||
| sys_data = data[sys_idx] | |||||
| sys_data = self._transform(sys_data) | |||||
| forward_method = getattr(primitive, method, None) | |||||
| output_data.append(forward_method(inputs=sys_data).value.values) | |||||
| # print(forward_method(inputs=sys_data).value.values.shape) | |||||
| # print(type(output_data), len(output_data), output_data[0].shape) | |||||
| # print(np.array(output_data)) | |||||
| if self.system_num == 1: | |||||
| output_data = output_data[0] | |||||
| # print(np.array(output_data)) | |||||
| return output_data | |||||
| # output_data = np.array(output_data) | |||||
| # if self.system_num == 1: | |||||
| # output_data = output_data.squeeze(axis=0) | |||||
| def _transform(self, X): #transform the ndarray to d3m dataframe, select columns to use | |||||
| column_name = [str(col_index) for col_index in range(X.shape[1])] | |||||
| return container.DataFrame(X, columns=column_name, generate_metadata=True) | |||||
| # def set_training_data(self, data): | |||||
| # return self.primitive.set_training_data(inputs=data) | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| from d3m import container | |||||
| from tods.detection_algorithm.Ensemble import EnsemblePrimitive | |||||
| from ..base import get_default_hyperparameter | |||||
| class EnsembleSKI: | |||||
| def __init__(self, **hyperparameter): | |||||
| hyperparams = get_default_hyperparameter(EnsemblePrimitive, hyperparameter) | |||||
| self.primitive = EnsemblePrimitive(hyperparams=hyperparams) | |||||
| def fit(self, data): | |||||
| data = self._sys_data_check(data) | |||||
| data = self._transform(data) | |||||
| self.primitive.set_training_data(inputs=data) | |||||
| self.primitive.fit() | |||||
| return | |||||
| def predict(self, data): | |||||
| data = self._sys_data_check(data) | |||||
| data = self._transform(data) | |||||
| output_data = self.primitive.produce(inputs=data).value.values | |||||
| return output_data | |||||
| def _sys_data_check(self, data): | |||||
| if type(data) is np.ndarray and data.ndim == 2 and data.shape[1] == 2: | |||||
| return data | |||||
| else: | |||||
| raise AttributeError('Input data should be n×2 numpy array.') | |||||
| def _transform(self, X): | |||||
| column_name = ['timestamp','value','system_id','scores'] | |||||
| X = np.concatenate((np.zeros((X.shape[0], 2)), X), axis=1) | |||||
| return container.DataFrame(X, columns=column_name, generate_metadata=True) | |||||
| # def __init__(self, **hyperparams): | |||||
| # super().__init__(primitive=EnsemblePrimitive, **hyperparams) | |||||
| # self.system_num = None | |||||
| @@ -0,0 +1 @@ | |||||
| from tods.sk_interface.data_ensemble.Ensemble_skinterface import EnsembleSKI | |||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodABOD import ABODPrimitive | from tods.detection_algorithm.PyodABOD import ABODPrimitive | ||||
| class ABODSKI(BaseSKI): | class ABODSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodAE import AutoEncoderPrimitive | from tods.detection_algorithm.PyodAE import AutoEncoderPrimitive | ||||
| class AutoEncoderSKI(BaseSKI): | class AutoEncoderSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.AutoRegODetect import AutoRegODetectorPrimitive | from tods.detection_algorithm.AutoRegODetect import AutoRegODetectorPrimitive | ||||
| class AutoRegODetectorSKI(BaseSKI): | class AutoRegODetectorSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodCBLOF import CBLOFPrimitive | from tods.detection_algorithm.PyodCBLOF import CBLOFPrimitive | ||||
| class CBLOFSKI(BaseSKI): | class CBLOFSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodCOF import COFPrimitive | from tods.detection_algorithm.PyodCOF import COFPrimitive | ||||
| class COFSKI(BaseSKI): | class COFSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.DeepLog import DeepLogPrimitive | from tods.detection_algorithm.DeepLog import DeepLogPrimitive | ||||
| class DeepLogSKI(BaseSKI): | class DeepLogSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodHBOS import HBOSPrimitive | from tods.detection_algorithm.PyodHBOS import HBOSPrimitive | ||||
| class HBOSSKI(BaseSKI): | class HBOSSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodIsolationForest import IsolationForestPrimitive | from tods.detection_algorithm.PyodIsolationForest import IsolationForestPrimitive | ||||
| class IsolationForestSKI(BaseSKI): | class IsolationForestSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.KDiscordODetect import KDiscordODetectorPrimitive | from tods.detection_algorithm.KDiscordODetect import KDiscordODetectorPrimitive | ||||
| class KDiscordODetectorSKI(BaseSKI): | class KDiscordODetectorSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodKNN import KNNPrimitive | from tods.detection_algorithm.PyodKNN import KNNPrimitive | ||||
| class KNNSKI(BaseSKI): | class KNNSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodLODA import LODAPrimitive | from tods.detection_algorithm.PyodLODA import LODAPrimitive | ||||
| class LODASKI(BaseSKI): | class LODASKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodLOF import LOFPrimitive | from tods.detection_algorithm.PyodLOF import LOFPrimitive | ||||
| class LOFSKI(BaseSKI): | class LOFSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.LSTMODetect import LSTMODetectorPrimitive | from tods.detection_algorithm.LSTMODetect import LSTMODetectorPrimitive | ||||
| class LSTMODetectorSKI(BaseSKI): | class LSTMODetectorSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.MatrixProfile import MatrixProfilePrimitive | from tods.detection_algorithm.MatrixProfile import MatrixProfilePrimitive | ||||
| class MatrixProfileSKI(BaseSKI): | class MatrixProfileSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodMoGaal import Mo_GaalPrimitive | from tods.detection_algorithm.PyodMoGaal import Mo_GaalPrimitive | ||||
| class Mo_GaalSKI(BaseSKI): | class Mo_GaalSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodOCSVM import OCSVMPrimitive | from tods.detection_algorithm.PyodOCSVM import OCSVMPrimitive | ||||
| class OCSVMSKI(BaseSKI): | class OCSVMSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PCAODetect import PCAODetectorPrimitive | from tods.detection_algorithm.PCAODetect import PCAODetectorPrimitive | ||||
| class PCAODetectorSKI(BaseSKI): | class PCAODetectorSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodSOD import SODPrimitive | from tods.detection_algorithm.PyodSOD import SODPrimitive | ||||
| class SODSKI(BaseSKI): | class SODSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodSoGaal import So_GaalPrimitive | from tods.detection_algorithm.PyodSoGaal import So_GaalPrimitive | ||||
| class So_GaalSKI(BaseSKI): | class So_GaalSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.SystemWiseDetection import SystemWiseDetectionPrimitive | from tods.detection_algorithm.SystemWiseDetection import SystemWiseDetectionPrimitive | ||||
| class SystemWiseDetectionSKI(BaseSKI): | class SystemWiseDetectionSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.Telemanom import TelemanomPrimitive | from tods.detection_algorithm.Telemanom import TelemanomPrimitive | ||||
| class TelemanomSKI(BaseSKI): | class TelemanomSKI(BaseSKI): | ||||
| @@ -8,4 +8,3 @@ class TelemanomSKI(BaseSKI): | |||||
| self.fit_available = True | self.fit_available = True | ||||
| self.predict_available = True | self.predict_available = True | ||||
| self.produce_available = False | self.produce_available = False | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.detection_algorithm.PyodVAE import VariationalAutoEncoderPrimitive | from tods.detection_algorithm.PyodVAE import VariationalAutoEncoderPrimitive | ||||
| class VariationalAutoEncoderSKI(BaseSKI): | class VariationalAutoEncoderSKI(BaseSKI): | ||||
| @@ -0,0 +1,22 @@ | |||||
| from tods.sk_interface.detection_algorithm.ABOD_skinterface import ABODSKI | |||||
| from tods.sk_interface.detection_algorithm.AutoEncoder_skinterface import AutoEncoderSKI | |||||
| from tods.sk_interface.detection_algorithm.AutoRegODetector_skinterface import AutoRegODetectorSKI | |||||
| from tods.sk_interface.detection_algorithm.CBLOF_skinterface import CBLOFSKI | |||||
| from tods.sk_interface.detection_algorithm.COF_skinterface import COFSKI | |||||
| from tods.sk_interface.detection_algorithm.DeepLog_skinterface import DeepLogSKI | |||||
| from tods.sk_interface.detection_algorithm.HBOS_skinterface import HBOSSKI | |||||
| from tods.sk_interface.detection_algorithm.IsolationForest_skinterface import IsolationForestSKI | |||||
| from tods.sk_interface.detection_algorithm.KDiscordODetector_skinterface import KDiscordODetectorSKI | |||||
| from tods.sk_interface.detection_algorithm.KNN_skinterface import KNNSKI | |||||
| from tods.sk_interface.detection_algorithm.LODA_skinterface import LODASKI | |||||
| from tods.sk_interface.detection_algorithm.LOF_skinterface import LOFSKI | |||||
| from tods.sk_interface.detection_algorithm.LSTMODetector_skinterface import LSTMODetectorSKI | |||||
| from tods.sk_interface.detection_algorithm.MatrixProfile_skinterface import MatrixProfileSKI | |||||
| from tods.sk_interface.detection_algorithm.Mo_Gaal_skinterface import Mo_GaalSKI | |||||
| from tods.sk_interface.detection_algorithm.OCSVM_skinterface import OCSVMSKI | |||||
| from tods.sk_interface.detection_algorithm.PCAODetector_skinterface import PCAODetectorSKI | |||||
| from tods.sk_interface.detection_algorithm.SOD_skinterface import SODSKI | |||||
| from tods.sk_interface.detection_algorithm.So_Gaal_skinterface import So_GaalSKI | |||||
| from tods.sk_interface.detection_algorithm.SystemWiseDetection_skinterface import SystemWiseDetectionSKI | |||||
| from tods.sk_interface.detection_algorithm.Telemanom_skinterface import TelemanomSKI | |||||
| from tods.sk_interface.detection_algorithm.VariationalAutoEncoder_skinterface import VariationalAutoEncoderSKI | |||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.AutoCorrelation import AutoCorrelationPrimitive | from tods.feature_analysis.AutoCorrelation import AutoCorrelationPrimitive | ||||
| class AutoCorrelationSKI(BaseSKI): | class AutoCorrelationSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.BKFilter import BKFilterPrimitive | from tods.feature_analysis.BKFilter import BKFilterPrimitive | ||||
| class BKFilterSKI(BaseSKI): | class BKFilterSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.DiscreteCosineTransform import DiscreteCosineTransformPrimitive | from tods.feature_analysis.DiscreteCosineTransform import DiscreteCosineTransformPrimitive | ||||
| class DiscreteCosineTransformSKI(BaseSKI): | class DiscreteCosineTransformSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.FastFourierTransform import FastFourierTransformPrimitive | from tods.feature_analysis.FastFourierTransform import FastFourierTransformPrimitive | ||||
| class FastFourierTransformSKI(BaseSKI): | class FastFourierTransformSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.HPFilter import HPFilterPrimitive | from tods.feature_analysis.HPFilter import HPFilterPrimitive | ||||
| class HPFilterSKI(BaseSKI): | class HPFilterSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.NonNegativeMatrixFactorization import NonNegativeMatrixFactorizationPrimitive | from tods.feature_analysis.NonNegativeMatrixFactorization import NonNegativeMatrixFactorizationPrimitive | ||||
| class NonNegativeMatrixFactorizationSKI(BaseSKI): | class NonNegativeMatrixFactorizationSKI(BaseSKI): | ||||
| @@ -1,10 +1,10 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.SKTruncatedSVD import SKTruncatedSVDPrimitive | from tods.feature_analysis.SKTruncatedSVD import SKTruncatedSVDPrimitive | ||||
| class SKTruncatedSVDSKI(BaseSKI): | class SKTruncatedSVDSKI(BaseSKI): | ||||
| def __init__(self, **hyperparams): | def __init__(self, **hyperparams): | ||||
| super().__init__(primitive=SKTruncatedSVDPrimitive, **hyperparams) | super().__init__(primitive=SKTruncatedSVDPrimitive, **hyperparams) | ||||
| self.fit_available = False | |||||
| self.fit_available = True | |||||
| self.predict_available = False | self.predict_available = False | ||||
| self.produce_available = True | self.produce_available = True | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.SpectralResidualTransform import SpectralResidualTransformPrimitive | from tods.feature_analysis.SpectralResidualTransform import SpectralResidualTransformPrimitive | ||||
| class SpectralResidualTransformSKI(BaseSKI): | class SpectralResidualTransformSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalAbsEnergy import StatisticalAbsEnergyPrimitive | from tods.feature_analysis.StatisticalAbsEnergy import StatisticalAbsEnergyPrimitive | ||||
| class StatisticalAbsEnergySKI(BaseSKI): | class StatisticalAbsEnergySKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalAbsSum import StatisticalAbsSumPrimitive | from tods.feature_analysis.StatisticalAbsSum import StatisticalAbsSumPrimitive | ||||
| class StatisticalAbsSumSKI(BaseSKI): | class StatisticalAbsSumSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalGmean import StatisticalGmeanPrimitive | from tods.feature_analysis.StatisticalGmean import StatisticalGmeanPrimitive | ||||
| class StatisticalGmeanSKI(BaseSKI): | class StatisticalGmeanSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalHmean import StatisticalHmeanPrimitive | from tods.feature_analysis.StatisticalHmean import StatisticalHmeanPrimitive | ||||
| class StatisticalHmeanSKI(BaseSKI): | class StatisticalHmeanSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalKurtosis import StatisticalKurtosisPrimitive | from tods.feature_analysis.StatisticalKurtosis import StatisticalKurtosisPrimitive | ||||
| class StatisticalKurtosisSKI(BaseSKI): | class StatisticalKurtosisSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMaximum import StatisticalMaximumPrimitive | from tods.feature_analysis.StatisticalMaximum import StatisticalMaximumPrimitive | ||||
| class StatisticalMaximumSKI(BaseSKI): | class StatisticalMaximumSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMeanAbsTemporalDerivative import StatisticalMeanAbsTemporalDerivativePrimitive | from tods.feature_analysis.StatisticalMeanAbsTemporalDerivative import StatisticalMeanAbsTemporalDerivativePrimitive | ||||
| class StatisticalMeanAbsTemporalDerivativeSKI(BaseSKI): | class StatisticalMeanAbsTemporalDerivativeSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMeanAbs import StatisticalMeanAbsPrimitive | from tods.feature_analysis.StatisticalMeanAbs import StatisticalMeanAbsPrimitive | ||||
| class StatisticalMeanAbsSKI(BaseSKI): | class StatisticalMeanAbsSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMeanTemporalDerivative import StatisticalMeanTemporalDerivativePrimitive | from tods.feature_analysis.StatisticalMeanTemporalDerivative import StatisticalMeanTemporalDerivativePrimitive | ||||
| class StatisticalMeanTemporalDerivativeSKI(BaseSKI): | class StatisticalMeanTemporalDerivativeSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMean import StatisticalMeanPrimitive | from tods.feature_analysis.StatisticalMean import StatisticalMeanPrimitive | ||||
| class StatisticalMeanSKI(BaseSKI): | class StatisticalMeanSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMedianAbsoluteDeviation import StatisticalMedianAbsoluteDeviationPrimitive | from tods.feature_analysis.StatisticalMedianAbsoluteDeviation import StatisticalMedianAbsoluteDeviationPrimitive | ||||
| class StatisticalMedianAbsoluteDeviationSKI(BaseSKI): | class StatisticalMedianAbsoluteDeviationSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMedian import StatisticalMedianPrimitive | from tods.feature_analysis.StatisticalMedian import StatisticalMedianPrimitive | ||||
| class StatisticalMedianSKI(BaseSKI): | class StatisticalMedianSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalMinimum import StatisticalMinimumPrimitive | from tods.feature_analysis.StatisticalMinimum import StatisticalMinimumPrimitive | ||||
| class StatisticalMinimumSKI(BaseSKI): | class StatisticalMinimumSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalSkew import StatisticalSkewPrimitive | from tods.feature_analysis.StatisticalSkew import StatisticalSkewPrimitive | ||||
| class StatisticalSkewSKI(BaseSKI): | class StatisticalSkewSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalStd import StatisticalStdPrimitive | from tods.feature_analysis.StatisticalStd import StatisticalStdPrimitive | ||||
| class StatisticalStdSKI(BaseSKI): | class StatisticalStdSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalVar import StatisticalVarPrimitive | from tods.feature_analysis.StatisticalVar import StatisticalVarPrimitive | ||||
| class StatisticalVarSKI(BaseSKI): | class StatisticalVarSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalVariation import StatisticalVariationPrimitive | from tods.feature_analysis.StatisticalVariation import StatisticalVariationPrimitive | ||||
| class StatisticalVariationSKI(BaseSKI): | class StatisticalVariationSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalVecSum import StatisticalVecSumPrimitive | from tods.feature_analysis.StatisticalVecSum import StatisticalVecSumPrimitive | ||||
| class StatisticalVecSumSKI(BaseSKI): | class StatisticalVecSumSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalWillisonAmplitude import StatisticalWillisonAmplitudePrimitive | from tods.feature_analysis.StatisticalWillisonAmplitude import StatisticalWillisonAmplitudePrimitive | ||||
| class StatisticalWillisonAmplitudeSKI(BaseSKI): | class StatisticalWillisonAmplitudeSKI(BaseSKI): | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.StatisticalZeroCrossing import StatisticalZeroCrossingPrimitive | from tods.feature_analysis.StatisticalZeroCrossing import StatisticalZeroCrossingPrimitive | ||||
| class StatisticalZeroCrossingSKI(BaseSKI): | class StatisticalZeroCrossingSKI(BaseSKI): | ||||
| @@ -1,10 +1,10 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.TRMF import TRMFPrimitive | from tods.feature_analysis.TRMF import TRMFPrimitive | ||||
| class TRMFSKI(BaseSKI): | class TRMFSKI(BaseSKI): | ||||
| def __init__(self, **hyperparams): | def __init__(self, **hyperparams): | ||||
| super().__init__(primitive=TRMFPrimitive, **hyperparams) | super().__init__(primitive=TRMFPrimitive, **hyperparams) | ||||
| self.fit_available = False | |||||
| self.fit_available = True | |||||
| self.predict_available = False | self.predict_available = False | ||||
| self.produce_available = True | self.produce_available = True | ||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from ..Base_skinterface import BaseSKI | |||||
| from ..base import BaseSKI | |||||
| from tods.feature_analysis.WaveletTransform import WaveletTransformPrimitive | from tods.feature_analysis.WaveletTransform import WaveletTransformPrimitive | ||||
| class WaveletTransformSKI(BaseSKI): | class WaveletTransformSKI(BaseSKI): | ||||
| @@ -0,0 +1,30 @@ | |||||
| from tods.sk_interface.feature_analysis.AutoCorrelation_skinterface import AutoCorrelationSKI | |||||
| from tods.sk_interface.feature_analysis.BKFilter_skinterface import BKFilterSKI | |||||
| from tods.sk_interface.feature_analysis.DiscreteCosineTransform_skinterface import DiscreteCosineTransformSKI | |||||
| from tods.sk_interface.feature_analysis.FastFourierTransform_skinterface import FastFourierTransformSKI | |||||
| from tods.sk_interface.feature_analysis.HPFilter_skinterface import HPFilterSKI | |||||
| from tods.sk_interface.feature_analysis.NonNegativeMatrixFactorization_skinterface import NonNegativeMatrixFactorizationSKI | |||||
| from tods.sk_interface.feature_analysis.SKTruncatedSVD_skinterface import SKTruncatedSVDSKI | |||||
| from tods.sk_interface.feature_analysis.SpectralResidualTransform_skinterface import SpectralResidualTransformSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalAbsEnergy_skinterface import StatisticalAbsEnergySKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalAbsSum_skinterface import StatisticalAbsSumSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalGmean_skinterface import StatisticalGmeanSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalHmean_skinterface import StatisticalHmeanSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalKurtosis_skinterface import StatisticalKurtosisSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMaximum_skinterface import StatisticalMaximumSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMeanAbsTemporalDerivative_skinterface import StatisticalMeanAbsTemporalDerivativeSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMeanAbs_skinterface import StatisticalMeanAbsSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMeanTemporalDerivative_skinterface import StatisticalMeanTemporalDerivativeSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMean_skinterface import StatisticalMeanSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMedianAbsoluteDeviation_skinterface import StatisticalMedianAbsoluteDeviationSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMedian_skinterface import StatisticalMedianSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalMinimum_skinterface import StatisticalMinimumSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalSkew_skinterface import StatisticalSkewSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalStd_skinterface import StatisticalStdSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalVar_skinterface import StatisticalVarSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalVariation_skinterface import StatisticalVariationSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalVecSum_skinterface import StatisticalVecSumSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalWillisonAmplitude_skinterface import StatisticalWillisonAmplitudeSKI | |||||
| from tods.sk_interface.feature_analysis.StatisticalZeroCrossing_skinterface import StatisticalZeroCrossingSKI | |||||
| from tods.sk_interface.feature_analysis.TRMF_skinterface import TRMFSKI | |||||
| from tods.sk_interface.feature_analysis.WaveletTransform_skinterface import WaveletTransformSKI | |||||
| @@ -2,7 +2,7 @@ | |||||
| import re | import re | ||||
| import os | import os | ||||
| with open('../entry_points/entry_points_detection_algorithm.txt','r',encoding='utf-8') as f: | |||||
| with open('../utils/entry_points/entry_points_detection_algorithm.txt','r',encoding='utf-8') as f: | |||||
| entry_file = f.read() | entry_file = f.read() | ||||
| output_dir = '../primitiveSKI/detection_algorithm' | output_dir = '../primitiveSKI/detection_algorithm' | ||||
| @@ -22,7 +22,7 @@ for primitive_index, primitive_start_loc in enumerate(primitive_start_loc_buf): | |||||
| # print(entry_file[primitive_folder_start_loc:primitive_start_loc-1]) | # print(entry_file[primitive_folder_start_loc:primitive_start_loc-1]) | ||||
| # print(entry_file[primitive_start_loc:primitive_end_loc]) | # print(entry_file[primitive_start_loc:primitive_end_loc]) | ||||
| import_line1 = 'import numpy as np \nfrom ..Base_skinterface import BaseSKI\n' | |||||
| import_line1 = 'import numpy as np \nfrom ..base import BaseSKI\n' | |||||
| import_line2 = 'from ' + primitive_folder + ' import ' + primitive_name + '\n\n' | import_line2 = 'from ' + primitive_folder + ' import ' + primitive_name + '\n\n' | ||||
| # print(import_line) | # print(import_line) | ||||
| @@ -0,0 +1,85 @@ | |||||
| #this file generates the _main.py files to test the primitives | |||||
| import re | |||||
| import os | |||||
| import sys | |||||
| #sys.path.insert(0, 'tods/utils/skinterface') | |||||
| print(sys.path) | |||||
| with open('../utils/entry_points/entry_points_detection_algorithm.txt','r',encoding='utf-8') as f: | |||||
| entry_file = f.read() | |||||
| output_dir = '../test/detection_algorithm' #output directory | |||||
| primitive_folder_start_loc_buf = [i.start()+2 for i in re.finditer('=', entry_file)] | |||||
| primitive_start_loc_buf = [i.start()+1 for i in re.finditer(':', entry_file)] | |||||
| primitive_end_loc_buf = [i.start() for i in re.finditer('\n', entry_file)] | |||||
| for primitive_index, primitive_start_loc in enumerate(primitive_start_loc_buf): | |||||
| primitive_folder_start_loc = primitive_folder_start_loc_buf[primitive_index] | |||||
| primitive_end_loc = primitive_end_loc_buf[primitive_index] | |||||
| primitive_folder = entry_file[primitive_folder_start_loc:primitive_start_loc-1] | |||||
| primitive_name = entry_file[primitive_start_loc:primitive_end_loc] | |||||
| algorithm_name = primitive_name.replace('Primitive', '') | |||||
| # print(entry_file[primitive_folder_start_loc:primitive_start_loc-1]) | |||||
| # print(entry_file[primitive_start_loc:primitive_end_loc]) | |||||
| primitve_api_name = primitive_name.replace('Primitive', '_skinterface') | |||||
| class_name = primitive_name.replace('Primitive', 'SKI') | |||||
| import_line1 = """import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| """ + 'from tods.sk_interface.detection_algorithm.'+ primitve_api_name + ' import ' + class_name + '\n\n' | |||||
| import_line2 = """from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score\n | |||||
| """ | |||||
| main_line1 = 'class ' + algorithm_name + 'SKI_TestCase(unittest.TestCase):\n' + \ | |||||
| """ def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42)\n | |||||
| """ | |||||
| main_line2 = ' self.transformer = ' + class_name + '(contamination=self.contamination)\n self.transformer.fit(self.X_train)\n\n' | |||||
| main_line3 = """ def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| """ | |||||
| python_content = import_line1 + import_line2 + main_line1+main_line2+main_line3 | |||||
| python_name = 'test_ski_' + algorithm_name + '.py' | |||||
| with open(os.path.join(output_dir, python_name), 'w', encoding='utf-8') as f: | |||||
| f.write(python_content) | |||||
| print(os.path.join(output_dir, python_name)) | |||||
| print(python_content) | |||||
| @@ -2,11 +2,12 @@ | |||||
| import re | import re | ||||
| import os | import os | ||||
| with open('../entry_points/entry_points_feature_analysis.txt','r',encoding='utf-8') as f: | |||||
| with open('../utils/entry_points/entry_points_feature_analysis.txt','r',encoding='utf-8') as f: | |||||
| entry_file = f.read() | entry_file = f.read() | ||||
| output_dir = '../primitiveSKI/feature_analysis' | output_dir = '../primitiveSKI/feature_analysis' | ||||
| fit_available_primitives = ['TRMFPrimitive', 'SKTruncatedSVDPrimitive'] | |||||
| primitive_folder_start_loc_buf = [i.start()+2 for i in re.finditer('=', entry_file)] | primitive_folder_start_loc_buf = [i.start()+2 for i in re.finditer('=', entry_file)] | ||||
| primitive_start_loc_buf = [i.start()+1 for i in re.finditer(':', entry_file)] | primitive_start_loc_buf = [i.start()+1 for i in re.finditer(':', entry_file)] | ||||
| @@ -22,14 +23,18 @@ for primitive_index, primitive_start_loc in enumerate(primitive_start_loc_buf): | |||||
| # print(entry_file[primitive_folder_start_loc:primitive_start_loc-1]) | # print(entry_file[primitive_folder_start_loc:primitive_start_loc-1]) | ||||
| # print(entry_file[primitive_start_loc:primitive_end_loc]) | # print(entry_file[primitive_start_loc:primitive_end_loc]) | ||||
| import_line1 = 'import numpy as np \nfrom ..Base_skinterface import BaseSKI\n' | |||||
| import_line1 = 'import numpy as np \nfrom ..base import BaseSKI\n' | |||||
| import_line2 = 'from ' + primitive_folder + ' import ' + primitive_name + '\n\n' | import_line2 = 'from ' + primitive_folder + ' import ' + primitive_name + '\n\n' | ||||
| # print(import_line) | # print(import_line) | ||||
| class_name = primitive_name.replace('Primitive', 'SKI') | class_name = primitive_name.replace('Primitive', 'SKI') | ||||
| class_line1 = 'class ' + class_name + '(BaseSKI):\n\tdef __init__(self, **hyperparams):\n\t\tsuper().__init__(primitive=' | class_line1 = 'class ' + class_name + '(BaseSKI):\n\tdef __init__(self, **hyperparams):\n\t\tsuper().__init__(primitive=' | ||||
| class_line2 = primitive_name + ', **hyperparams)\n' | class_line2 = primitive_name + ', **hyperparams)\n' | ||||
| class_line3 = '\t\tself.fit_available = False\n\t\tself.predict_available = False\n\t\tself.produce_available = True\n' | |||||
| if primitive_name in fit_available_primitives: | |||||
| class_line3 = '\t\tself.fit_available = True\n\t\tself.predict_available = False\n\t\tself.produce_available = True\n' | |||||
| else: | |||||
| class_line3 = '\t\tself.fit_available = False\n\t\tself.predict_available = False\n\t\tself.produce_available = True\n' | |||||
| python_content = import_line1 + import_line2 + class_line1 + class_line2 + class_line3 | python_content = import_line1 + import_line2 + class_line1 + class_line2 + class_line3 | ||||
| python_name = primitive_name.replace('Primitive', '_skinterface.py') | python_name = primitive_name.replace('Primitive', '_skinterface.py') | ||||
| @@ -0,0 +1,84 @@ | |||||
| #this file generates the _main.py files to test the primitives | |||||
| import re | |||||
| import os | |||||
| import sys | |||||
| #sys.path.insert(0, 'tods/utils/skinterface') | |||||
| print(sys.path) | |||||
| with open('../utils/entry_points/entry_points_feature_analysis.txt','r',encoding='utf-8') as f: | |||||
| entry_file = f.read() | |||||
| output_dir = '../test/feature_analysis' #output directory | |||||
| fit_available_primitives = ['SKTruncatedSVDPrimitive'] | |||||
| primitive_folder_start_loc_buf = [i.start()+2 for i in re.finditer('=', entry_file)] | |||||
| primitive_start_loc_buf = [i.start()+1 for i in re.finditer(':', entry_file)] | |||||
| primitive_end_loc_buf = [i.start() for i in re.finditer('\n', entry_file)] | |||||
| for primitive_index, primitive_start_loc in enumerate(primitive_start_loc_buf): | |||||
| primitive_folder_start_loc = primitive_folder_start_loc_buf[primitive_index] | |||||
| primitive_end_loc = primitive_end_loc_buf[primitive_index] | |||||
| primitive_folder = entry_file[primitive_folder_start_loc:primitive_start_loc-1] | |||||
| primitive_name = entry_file[primitive_start_loc:primitive_end_loc] | |||||
| algorithm_name = primitive_name.replace('Primitive', '') | |||||
| # print(entry_file[primitive_folder_start_loc:primitive_start_loc-1]) | |||||
| # print(entry_file[primitive_start_loc:primitive_end_loc]) | |||||
| primitve_api_name = primitive_name.replace('Primitive', '_skinterface') | |||||
| class_name = primitive_name.replace('Primitive', 'SKI') | |||||
| import_line1 = """import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| """ + 'from tods.sk_interface.feature_analysis.' + primitve_api_name + ' import ' + class_name + '\n\n' | |||||
| import_line2 = """from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score\n | |||||
| """ | |||||
| main_line1 = 'class ' + algorithm_name + 'SKI_TestCase(unittest.TestCase):\n' + \ | |||||
| """ def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42)\n | |||||
| """ | |||||
| main_line2 = ' self.transformer = ' + class_name + '()\n' | |||||
| if primitive_name in fit_available_primitives: | |||||
| main_line3 = ' self.transformer.fit(self.X_train)\n\n' | |||||
| else: | |||||
| main_line3 = '\n' | |||||
| main_line4 = """ def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| """ | |||||
| python_content = import_line1 + import_line2 + main_line1+main_line2+main_line3+main_line4 | |||||
| python_name = 'test_ski_' + algorithm_name + '.py' | |||||
| with open(os.path.join(output_dir, python_name), 'w', encoding='utf-8') as f: | |||||
| f.write(python_content) | |||||
| print(os.path.join(output_dir, python_name)) | |||||
| print(python_content) | |||||
| @@ -0,0 +1,14 @@ | |||||
| #!/usr/bin/env python3 | |||||
| import sys | |||||
| import unittest | |||||
| runner = unittest.TextTestRunner(verbosity=1) | |||||
| tests = unittest.TestLoader().discover('./') | |||||
| if not runner.run(tests).wasSuccessful(): | |||||
| sys.exit(1) | |||||
| #for each in ['data_processing', 'timeseries_processing', 'feature_analysis', 'detection_algorithm']: | |||||
| # tests = unittest.TestLoader().discover(each) | |||||
| # if not runner.run(tests).wasSuccessful(): | |||||
| # sys.exit(1) | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.ABOD_skinterface import ABODSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class ABODSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = ABODSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.AutoEncoder_skinterface import AutoEncoderSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class AutoEncoderSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = AutoEncoderSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.AutoRegODetector_skinterface import AutoRegODetectorSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class AutoRegODetectorSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = AutoRegODetectorSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.CBLOF_skinterface import CBLOFSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class CBLOFSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = CBLOFSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.COF_skinterface import COFSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class COFSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = COFSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.DeepLog_skinterface import DeepLogSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class DeepLogSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = DeepLogSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.HBOS_skinterface import HBOSSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class HBOSSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = HBOSSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.IsolationForest_skinterface import IsolationForestSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class IsolationForestSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = IsolationForestSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.KDiscordODetector_skinterface import KDiscordODetectorSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class KDiscordODetectorSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = KDiscordODetectorSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.KNN_skinterface import KNNSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class KNNSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = KNNSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.LODA_skinterface import LODASKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class LODASKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = LODASKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.LOF_skinterface import LOFSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class LOFSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = LOFSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.LSTMODetector_skinterface import LSTMODetectorSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class LSTMODetectorSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = LSTMODetectorSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.MatrixProfile_skinterface import MatrixProfileSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class MatrixProfileSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = MatrixProfileSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.Mo_Gaal_skinterface import Mo_GaalSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class Mo_GaalSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = Mo_GaalSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.OCSVM_skinterface import OCSVMSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class OCSVMSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = OCSVMSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.PCAODetector_skinterface import PCAODetectorSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class PCAODetectorSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = PCAODetectorSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.SOD_skinterface import SODSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class SODSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = SODSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.So_Gaal_skinterface import So_GaalSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class So_GaalSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = So_GaalSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.SystemWiseDetection_skinterface import SystemWiseDetectionSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class SystemWiseDetectionSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = SystemWiseDetectionSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.Telemanom_skinterface import TelemanomSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class TelemanomSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = TelemanomSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,43 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.detection_algorithm.VariationalAutoEncoder_skinterface import VariationalAutoEncoderSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class VariationalAutoEncoderSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.maxDiff = None | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.contamination = 0.1 | |||||
| self.roc_floor = 0.0 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, | |||||
| contamination=self.contamination, random_state=42) | |||||
| self.transformer = VariationalAutoEncoderSKI(contamination=self.contamination) | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_prediction_labels(self): | |||||
| pred_labels = self.transformer.predict(self.X_test) | |||||
| assert_equal(pred_labels.shape[0], self.y_test.shape[0]) | |||||
| def test_prediction_score(self): | |||||
| pred_scores = self.transformer.predict_score(self.X_test) | |||||
| assert_equal(pred_scores.shape[0], self.y_test.shape[0]) | |||||
| assert_greater_equal(roc_auc_score(self.y_test, pred_scores), self.roc_floor) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,14 @@ | |||||
| #!/usr/bin/env python3 | |||||
| import sys | |||||
| import unittest | |||||
| runner = unittest.TextTestRunner(verbosity=1) | |||||
| tests = unittest.TestLoader().discover('./') | |||||
| if not runner.run(tests).wasSuccessful(): | |||||
| sys.exit(1) | |||||
| #for each in ['data_processing', 'timeseries_processing', 'feature_analysis', 'detection_algorithm']: | |||||
| # tests = unittest.TestLoader().discover(each) | |||||
| # if not runner.run(tests).wasSuccessful(): | |||||
| # sys.exit(1) | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.AutoCorrelation_skinterface import AutoCorrelationSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class AutoCorrelationSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = AutoCorrelationSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.BKFilter_skinterface import BKFilterSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class BKFilterSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = BKFilterSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.DiscreteCosineTransform_skinterface import DiscreteCosineTransformSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class DiscreteCosineTransformSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = DiscreteCosineTransformSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.FastFourierTransform_skinterface import FastFourierTransformSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class FastFourierTransformSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = FastFourierTransformSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.HPFilter_skinterface import HPFilterSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class HPFilterSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = HPFilterSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.NonNegativeMatrixFactorization_skinterface import NonNegativeMatrixFactorizationSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class NonNegativeMatrixFactorizationSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = NonNegativeMatrixFactorizationSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,35 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.SKTruncatedSVD_skinterface import SKTruncatedSVDSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class SKTruncatedSVDSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = SKTruncatedSVDSKI() | |||||
| self.transformer.fit(self.X_train) | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.SpectralResidualTransform_skinterface import SpectralResidualTransformSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class SpectralResidualTransformSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = SpectralResidualTransformSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.StatisticalAbsEnergy_skinterface import StatisticalAbsEnergySKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class StatisticalAbsEnergySKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = StatisticalAbsEnergySKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||
| @@ -0,0 +1,34 @@ | |||||
| import numpy as np | |||||
| import pandas as pd | |||||
| import os | |||||
| from tods.sk_interface.feature_analysis.StatisticalAbsSum_skinterface import StatisticalAbsSumSKI | |||||
| from pyod.utils.data import generate_data | |||||
| import unittest | |||||
| from sklearn.utils.testing import assert_allclose | |||||
| from sklearn.utils.testing import assert_array_less | |||||
| from sklearn.utils.testing import assert_equal | |||||
| from sklearn.utils.testing import assert_greater | |||||
| from sklearn.utils.testing import assert_greater_equal | |||||
| from sklearn.utils.testing import assert_less_equal | |||||
| from sklearn.utils.testing import assert_raises | |||||
| from sklearn.metrics import roc_auc_score | |||||
| class StatisticalAbsSumSKI_TestCase(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.n_train = 200 | |||||
| self.n_test = 100 | |||||
| self.X_train, self.y_train, self.X_test, self.y_test = generate_data( | |||||
| n_train=self.n_train, n_test=self.n_test, n_features=5, | |||||
| contamination=0., random_state=42) | |||||
| self.transformer = StatisticalAbsSumSKI() | |||||
| def test_produce(self): | |||||
| X_transform = self.transformer.produce(self.X_test) | |||||
| if __name__ == '__main__': | |||||
| unittest.main() | |||||