コード例 #1
0
ファイル: runner.py プロジェクト: breznak/NAB
  def optimize(self, detectorNames):
    """Optimize the threshold for each combination of detector and profile.

    @param detectorNames  (list)  List of detector names.

    @return thresholds    (dict)  Dictionary of dictionaries with detector names
                                  then usernames as keys followed by another
                                  dictionary containing the score and the
                                  threshold used to obtained that score.
    """
    print "\nOptimizing anomaly Scores"

    thresholds = dict()

    for detector in detectorNames:
      resultsDetectorDir = os.path.join(self.resultsDir, detector)
      resultsCorpus = Corpus(resultsDetectorDir)

      thresholds[detector] = dict()

      for username, profile in self.profiles.iteritems():
        costMatrix = profile["CostMatrix"]

        thresholds[detector][username] = optimizeThreshold(
          (self.pool,
          detector,
          username,
          costMatrix,
          resultsCorpus,
          self.corpusLabel,
          self.probationaryPercent))

    updateThresholds(thresholds, self.thresholdPath)

    return thresholds
コード例 #2
0
ファイル: runner.py プロジェクト: pmenn36/NAB
  def optimize(self, detectorNames):
    """Optimize the threshold for each combination of detector and profile.

    @param detectorNames  (list)  List of detector names.

    @return thresholds    (dict)  Dictionary of dictionaries with detector names
                                  then profile names as keys followed by another
                                  dictionary containing the score and the
                                  threshold used to obtained that score.
    """
    print("\nRunning optimize step")

    scoreFlag = False
    thresholds = {}

    for detectorName in detectorNames:
      resultsDetectorDir = os.path.join(self.resultsDir, detectorName)
      resultsCorpus = Corpus(resultsDetectorDir)

      thresholds[detectorName] = {}

      for profileName, profile in self.profiles.items():
        thresholds[detectorName][profileName] = optimizeThreshold(
          (detectorName,
           profile["CostMatrix"],
           resultsCorpus,
           self.corpusLabel,
           self.probationaryPercent))

    updateThresholds(thresholds, self.thresholdPath)

    return thresholds
コード例 #3
0
ファイル: runner.py プロジェクト: numenta/NAB
  def optimize(self, detectorNames):
    """Optimize the threshold for each combination of detector and profile.

    @param detectorNames  (list)  List of detector names.

    @return thresholds    (dict)  Dictionary of dictionaries with detector names
                                  then profile names as keys followed by another
                                  dictionary containing the score and the
                                  threshold used to obtained that score.
    """
    print "\nRunning optimize step"

    scoreFlag = False
    thresholds = {}

    for detectorName in detectorNames:
      resultsDetectorDir = os.path.join(self.resultsDir, detectorName)
      resultsCorpus = Corpus(resultsDetectorDir)

      thresholds[detectorName] = {}

      for profileName, profile in self.profiles.iteritems():
        thresholds[detectorName][profileName] = optimizeThreshold(
          (detectorName,
           profile["CostMatrix"],
           resultsCorpus,
           self.corpusLabel,
           self.probationaryPercent))

    updateThresholds(thresholds, self.thresholdPath)

    return thresholds
コード例 #4
0
    def testThresholdUpdateDifferentScores(self):
        """Thresholds should be overwritten regardless of new scores."""
        newThresholds = {
            "lucky_detector": {
                "standard": {
                    "score": 23.0,
                    "threshold": 0.77
                }
            },
            "deep_thought": {
                "standard": {
                    "score": 32.0,
                    "threshold": 0.99
                }
            }
        }

        updateThresholds(newThresholds, self.thresholdsPath)

        with open(self.thresholdsPath) as inFile:
            threshDict = json.load(inFile)

        self.assertDictEqual(
            newThresholds, threshDict,
            "The updated threshold dict does not match the expected dict.")
コード例 #5
0
    def testThresholdUpdateNewDetector(self):
        newThresholds = {
            "bad_detector": {
                "standard": {
                    "score": -1.0,
                    "threshold": 0.5
                }
            }
        }

        updateThresholds(newThresholds, self.thresholdsPath)

        with open(self.thresholdsPath) as inFile:
            threshDict = json.load(inFile)

        expectedDict = {
            "lucky_detector": {
                "standard": {
                    "score": 13.0,
                    "threshold": 0.7
                }
            },
            "deep_thought": {
                "standard": {
                    "score": 42.0,
                    "threshold": 0.9
                }
            },
            "bad_detector": {
                "standard": {
                    "score": -1.0,
                    "threshold": 0.5
                }
            }
        }

        self.assertDictEqual(
            expectedDict, threshDict,
            "The updated threshold dict does not match the expected dict.")
コード例 #6
0
ファイル: thresholds_test.py プロジェクト: Aleyasen/NAB
  def testThresholdUpdateNewDetector(self):
    newThresholds = {
      "bad_detector": {
        "standard": {
          "score": -1.0,
          "threshold": 0.5
        }
      }
    }

    updateThresholds(newThresholds, self.thresholdsPath)

    with open(self.thresholdsPath) as inFile:
      threshDict = json.load(inFile)

    expectedDict = {
      "lucky_detector": {
        "standard": {
          "score": 13.0,
          "threshold": 0.7
        }
      },
      "deep_thought": {
        "standard": {
          "score": 42.0,
          "threshold": 0.9
        }
      },
      "bad_detector": {
        "standard": {
          "score": -1.0,
          "threshold": 0.5
        }
      }
    }

    self.assertDictEqual(expectedDict, threshDict,
      "The updated threshold dict does not match the expected dict.")
コード例 #7
0
ファイル: thresholds_test.py プロジェクト: Aleyasen/NAB
  def testThresholdUpdateDifferentScores(self):
    """Thresholds should be overwritten regardless of new scores."""
    newThresholds = {
      "lucky_detector": {
        "standard": {
          "score": 23.0,
          "threshold": 0.77
        }
      },
      "deep_thought": {
        "standard": {
          "score": 32.0,
          "threshold": 0.99
        }
      }
    }

    updateThresholds(newThresholds, self.thresholdsPath)

    with open(self.thresholdsPath) as inFile:
      threshDict = json.load(inFile)

    self.assertDictEqual(newThresholds, threshDict,
      "The updated threshold dict does not match the expected dict.")