示例#1
0
 def detect(self, dataset):
     _, features, _ = self.model_fn(dataset, **self.config)
     scores, predictions, attentions = detect_fn(self.model, features,
                                                 dataset, self.config)
     return AnomalyDetectionResult(scores=scores,
                                   predictions=predictions,
                                   attentions=attentions)
    def detect(self, dataset):
        """
        Calculate the anomaly score for each event attribute in each trace.
        Anomaly score here is the mean squared error.

        :param traces: traces to predict
        :return:
            scores: anomaly scores for each attribute;
                            shape is (#traces, max_trace_length - 1, #attributes)

        """
        # Get features
        _, features, _ = self.model_fn(dataset, **self.config)

        # Parameters
        input_size = int(self.model.input.shape[1])
        features_size = int(features.shape[1])
        if input_size > features_size:
            features = np.pad(features,
                              [(0, 0), (0, input_size - features_size),
                               (0, 0)],
                              mode='constant')
        elif input_size < features_size:
            features = features[:, :input_size]

        # Init anomaly scores array
        scores = np.zeros(dataset.binary_targets.shape)

        # Get predictions
        predictions = self.model.predict(features)

        # Calculate error
        errors = np.power(features - predictions, 2)

        # Split the errors according to the attribute dims
        split = np.cumsum(np.tile(dataset.attribute_dims, [dataset.max_len]),
                          dtype=int)[:-1]
        errors = np.split(errors, split, axis=1)
        errors = np.array(
            [np.mean(a, axis=1) if len(a) > 0 else 0.0 for a in errors])

        for i in range(len(dataset.attribute_dims)):
            error = errors[i::len(dataset.attribute_dims)]
            scores[:, :, i] = error.T

        return AnomalyDetectionResult(scores=scores)
    def detect(self, dataset):
        features = dataset.flat_features_2d

        input_size = self._model.support_vectors_.shape[1]
        features_size = features.shape[1]
        if input_size > features_size:
            features = np.pad(features,
                              [(0, 0), (0, input_size - features_size),
                               (0, 0)][:len(features.shape)],
                              mode='constant')
        elif input_size < features_size:
            features = features[:, :input_size]

        anomaly_scores = np.zeros(dataset.binary_targets.shape, dtype=int)
        pred = self._model.predict(features)
        pred = (pred == -1)[:, np.newaxis, np.newaxis]
        anomaly_scores += pred

        return AnomalyDetectionResult(scores=anomaly_scores)
 def detect(self, dataset):
     scores = np.ones(dataset.binary_targets.shape)
     scores *= np.random.randint(
         0, 2, dataset.binary_targets.shape[0])[:, np.newaxis, np.newaxis]
     return AnomalyDetectionResult(scores=scores)
 def detect(self, dataset):
     return AnomalyDetectionResult(scores=dataset.binary_targets)