示例#1
0
def runDataset(dataset):
    """
    Runs through the dataset given for anomaly detection

    """

    # set model parameters, csv path, and output csv/plot
    if (dataset == 0):
        model_par = machine_model_params
        csv_path = "./data/machine_temperature_system_failure.csv"
        outputCSVFile = nupic_output.NuPICFileOutput(
            ["Machine_Temp_Sys_Failure_OUTPUT_CSV"])
        outputPlotFile = nupic_output.NuPICPlotOutput(
            ["Machine_Temp_Sys_Failure_OUTPUT_PLOT"])
    elif (dataset == 1):
        model_par = twitter_model_params
        csv_path = "./data/Twitter_volume_GOOG.csv"
        outputCSVFile = nupic_output.NuPICFileOutput(
            ["Twitter_Volume_Google_OUTPUT_CSV"])
        outputPlotFile = nupic_output.NuPICPlotOutput(
            ["Twitter_Volume_Google_OUTPUT_PLOT"])
    else:
        print("No specified dataset, error will occur")
        model_params = None

    # create model
    model = createModel(model_par)

    #run model
    runModel(model, csv_path, outputCSVFile, outputPlotFile)
示例#2
0
def runModel(model):
    inputFile = open("rec-center-hourly.csv", "rb")
    csvReader = csv.reader(inputFile)
    csvReader.next()
    csvReader.next()
    csvReader.next()
    shifter = InferenceShifter()
    output = nupic_output.NuPICPlotOutput(['REC center'])

    counter = 0
    for row in csvReader:
        counter += 1
        if (counter % 100 == 0):
            print("Read %i lines", counter)
        timestamp = datetime.datetime.strptime(row[0], DATE_FORMAT)
        consumption = float(row[1])

        result = model.run({
            "timestamp": timestamp,
            "kw_energy_consumption": consumption
        })

        result = shifter.shift(result)
        prediction = result.inferences["multiStepBestPredictions"][1]
        output.write([timestamp], [consumption], [prediction])

    inputFile.close()
    output.close()
示例#3
0
def runIoThroughNupic(inputData, model, gymName, plot):
    inputFile = open(inputData, "rb")
    csvReader = csv.reader(inputFile)
    # skip header rows
    csvReader.next()
    csvReader.next()
    csvReader.next()

    shifter = InferenceShifter()
    if plot:
        output = nupic_output.NuPICPlotOutput([gymName])
    else:
        output = nupic_output.NuPICFileOutput([gymName])

    counter = 0
    for row in csvReader:
        counter += 1
        if (counter % 100 == 0):
            print "Read %i lines..." % counter
        timestamp = datetime.datetime.strptime(row[0], DATE_FORMAT)
        consumption = float(row[1])
        result = model.run({
            "timestamp": timestamp,
            "kw_energy_consumption": consumption
        })

        if plot:
            result = shifter.shift(result)

        prediction = result.inferences["multiStepBestPredictions"][1]
        output.write([timestamp], [consumption], [prediction])

    inputFile.close()
    output.close()
示例#4
0
def runIoThroughNupic(inputPath, model, modelName, plot=False):
    with open(inputPath, "rb") as inputFile:
        csvReader = csv.reader(inputFile)
        # skip header rows
        headers = csvReader.next()
        csvReader.next()
        csvReader.next()
        shifter = InferenceShifter()

        if plot:
            output = nupic_output.NuPICPlotOutput(modelName)
        else:
            output = nupic_output.NuPICFileOutput(modelName, path="data")

        counter = 0
        for row in csvReader:
            assert len(row) == len(headers)
            counter += 1
            if (counter % 100 == 0):
                print "Read %i lines..." % counter
            row = [float(row[0])] + [int(val) for val in row[1:]]
            input_row = dict(zip(headers, row))
            result = model.run(input_row)

            if plot:
                seconds = input_row["seconds"]
                actual = input_row[PREDICTED_BUCKET]
                shifter.shift(result)
                predicted = result.inferences["multiStepBestPredictions"][1]
                output.write([seconds], [actual], [predicted])
            else:
                output.write(input_row, result)

        output.close()
示例#5
0
def runEEGAnomaly():
    # Create Model
    model = createModel()
    model.enableInference({'predictedField': 'ch0','predictedField': 'ch1'})


    # Load data
    mat = scipy.io.loadmat(_DATA_FILE)
    data = mat['data']
    seconds = mat['seconds']
    
    # plotting stuff?
    output = nupic_output.NuPICPlotOutput(["ch0","ch1"])
    
    #for i,t in data,seconds:
    for i, t in zip(data, seconds):
        #modelInput = dict(zip('ch1', i[0]))
        modelInput = {'ch0':i[0],'ch1':i[1]}
        result = model.run(modelInput)
        #anomalyScore = result.inferences['anomalyScore']
        
        prediction = result.inferences["multiStepBestPredictions"][1]
        output.write([t[0],t[0]],[i[0],i[1]],[prediction,prediction])
        
        #if anomalyScore > _ANOMALY_THRESHOLD:
       #     _LOGGER.info("Anomaly detected. Anomaly score: %f.", anomalyScore)

    print "Anomaly scores have been written to",_OUTPUT_PATH
示例#6
0
def runModel(model, file_name):
    '''
  Run predictions with a given model.

  Args:
    model: Opf model.
  '''

    input_file = open(file_name, "rb")
    csv_reader = csv.reader(input_file)
    csv_reader.next()
    csv_reader.next()
    csv_reader.next()

    shifter = InferenceShifter()
    output = nupic_output.NuPICPlotOutput("Sine", show_anomaly_score=True)

    for row in csv_reader:

        angle = float(row[0])
        sine = float(row[1])

        result = model.run({"angle": angle, "sine": sine})

        result = shifter.shift(result)

        inference = result.inferences['multiStepBestPredictions'][1]
        anomaly_score = result.inferences['anomalyScore']

        output.write(sine, inference, anomaly_score)

    input_file.close()
    output.close()
示例#7
0
def run_io_through_nupic(input_data, model, file_name, plot, print_results):
    input_file = open(input_data, "rb")
    csv_reader = csv.reader(input_file)
    # skip header rows
    csv_reader.next()
    csv_reader.next()
    csv_reader.next()

    shifter = InferenceShifter()
    if plot:
        output = nupic_output.NuPICPlotOutput([file_name])
    else:
        output = nupic_output.NuPICFileOutput([file_name])

    metrics_manager = MetricsManager(_METRIC_SPECS, model.getFieldInfo(),
                                     model.getInferenceType())

    counter = 0
    timestamp = None
    consumption = None

    result = None
    for row in csv_reader:
        counter += 1
        timestamp = datetime.datetime.strptime(row[1], DATE_FORMAT)
        consumption = int(row[2])
        amount = float(row[0])
        result = model.run({
            "amount": amount,
            "date": timestamp,
            "tte": consumption
        })
        result.metrics = metrics_manager.update(result)

        if counter % 100 == 0 or counter % 384 == 0:
            print "Read %i lines..." % counter
            print ("After %i records, rmse=%f" % (counter,
                                                            result.metrics["multiStepBestPredictions:multiStep:"
                                                                           "errorMetric='rmse':steps=1:window=1000:"
                                                                           "field=tte"]))

        if plot:
            result = shifter.shift(result)

        prediction = result.inferences["multiStepBestPredictions"][1]
        output.write([timestamp], [consumption], [prediction])
        if print_results:
            print("date:", timestamp.strftime("%y-%m-%d"), "actual:", consumption, "predicted:", prediction)

        if plot and counter % 20 == 0:
            output.refresh_gui()

        #if plot and counter % 1000 == 0:
        #    break

    input_file.close()
    output.close()
示例#8
0
def run(numRecords):
    '''
  Run the Hot Gym example.
  '''

    # Create a data source for the network.
    dataSource = FileRecordStream(streamID=_INPUT_FILE_PATH)
    numRecords = min(numRecords, dataSource.getDataRowCount())
    network = createNetwork(dataSource)

    network.regions["sensor"].getSelf().predictedField = "sine"

    # Set predicted field
    network.regions["sensor"].setParameter("predictedField", "sine")

    # Enable learning for all regions.
    network.regions["SP"].setParameter("learningMode", 1)
    network.regions["TM"].setParameter("learningMode", 1)
    network.regions["classifier"].setParameter("learningMode", 1)

    # Enable inference for all regions.
    network.regions["SP"].setParameter("inferenceMode", 1)
    network.regions["TM"].setParameter("inferenceMode", 1)
    network.regions["classifier"].setParameter("inferenceMode", 1)

    results = []
    N = 1  # Run the network, N iterations at a time.
    output = nupic_output.NuPICPlotOutput("Sine", show_anomaly_score=True)
    for iteration in range(0, numRecords, N):
        network.run(N)

        sine = network.regions["sensor"].getOutputData("sourceOut")[0]

        predictionResults = getPredictionResults(network, "classifier")
        oneStep = predictionResults[1]["predictedValue"]
        oneStepConfidence = predictionResults[1]["predictionConfidence"]
        fiveStep = predictionResults[10]["predictedValue"]
        fiveStepConfidence = predictionResults[10]["predictionConfidence"]

        result = (oneStep, oneStepConfidence * 100, fiveStep,
                  fiveStepConfidence * 100)
        print "1-step: {:16} ({:4.4}%)\t 10-step: {:16} ({:4.4}%)".format(
            *result)
        results.append(result)

        output.write(sine, oneStep, 0)

    output.close()

    return results
示例#9
0
文件: run.py 项目: Vlequay/nupic.base
def runIoThroughNupic(inputData, model, name, plot):
  inputFile = open(inputData, "rb")
  csvReader = csv.reader(inputFile)
  # skip header rows
  csvReader.next()
  csvReader.next()
  csvReader.next()

  shifter = InferenceShifter()
  if len(plot) == 0:
      for field in SWARM_DESCRIPTION["includedFields"]:
          plot.append(field["fieldName"])
      output = nupic_output.NuPICFileOutput(name, plot)
  else:
      output = nupic_output.NuPICPlotOutput(name, plot)

  metricsManager = MetricsManager(_METRIC_SPECS, model.getFieldInfo(),
                                  model.getInferenceType())

  counter = 0
  for row in csvReader:
    counter += 1
    data = {}
    fldCounter = 0
    for field in SWARM_DESCRIPTION["includedFields"]:
        data[field["fieldName"]] = translate_data(field["fieldType"], row[fldCounter])
        fldCounter += 1
    result = model.run(data)
    result.metrics = metricsManager.update(result)

    if options.verbose is not None and counter % 100 == 0:
      print "Read %i lines..." % counter
      print ("After %i records, 1-step altMAPE=%f" % (counter,
              result.metrics["multiStepBestPredictions:multiStep:"
                             "errorMetric='altMAPE':steps=1:window=1000:"
                             "field="+PREDICTED_FIELD]))

    if plot:
      result = shifter.shift(result)

    prediction = result.inferences["multiStepBestPredictions"][1]
    vals = []
    for field in plot:
        vals.append(data[field])
    output.write(vals, prediction)

  inputFile.close()
  output.close()
示例#10
0
def runIoThroughNupic(inputData, model, gymName, plot):
    inputFile = open(inputData, "rb")
    csvReader = csv.reader(inputFile)
    # skip header rows
    csvReader.next()
    csvReader.next()
    csvReader.next()

    shifter = InferenceShifter()
    if plot:
        output = nupic_output.NuPICPlotOutput([gymName])
    else:
        output = nupic_output.NuPICFileOutput([gymName])

    metricsManager = MetricsManager(_METRIC_SPECS, model.getFieldInfo(),
                                    model.getInferenceType())

    counter = 0
    for row in csvReader:
        counter += 1
        timestamp = datetime.datetime.strptime(row[0], DATE_FORMAT)
        consumption = float(row[1])
        result = model.run({
            "timestamp": timestamp,
            "kw_energy_consumption": consumption
        })
        result.metrics = metricsManager.update(result)

        if counter % 100 == 0:
            print "Read %i lines..." % counter
            print("After %i records, 1-step altMAPE=%f" %
                  (counter,
                   result.metrics["multiStepBestPredictions:multiStep:"
                                  "errorMetric='altMAPE':steps=1:window=1000:"
                                  "field=kw_energy_consumption"]))

        if plot:
            result = shifter.shift(result)

        prediction = result.inferences["multiStepBestPredictions"][1]
        output.write([timestamp], [consumption], [prediction])

        if plot and counter % 20 == 0:
            output.refreshGUI()

    inputFile.close()
    output.close()
示例#11
0
def runIoThroughNupic(inputData, model, dataName, plot):
    inputFile = open(inputData, "rU")
    csvReader = csv.reader(inputFile)
    # skip header rows
    csvReader.next()
    csvReader.next()
    csvReader.next()

    shifter = InferenceShifter()
    if plot:
        output = nupic_output.NuPICPlotOutput([dataName])
    else:
        output = nupic_output.NuPICFileOutput([dataName])

    metricsManager = MetricsManager(_METRIC_SPECS, model.getFieldInfo(),
                                    model.getInferenceType())

    counter = 0
    for row in csvReader:
        counter += 1
        y = float(row[0])
        result = model.run({"y": y})
        result.metrics = metricsManager.update(result)

        if counter % 100 == 0:
            print "Read %i lines..." % counter
            print(
                "After %i records, 1-step nrmse=%f", counter,
                result.metrics["multiStepBestPredictions:multiStep:"
                               "errorMetric='nrmse':steps=1:window=1000000:"
                               "field=y"])

        if plot:
            result = shifter.shift(result)

        prediction = result.inferences["multiStepBestPredictions"][1]
        output.write([0], [y], [prediction])

    inputFile.close()
    output.close()
示例#12
0
def runIoThroughNupic(inputData, model, modelName, plot):
  inputFile = open(inputData, "rb")
  csvReader = csv.reader(inputFile)
  # skip header rows
  csvReader.next()
  csvReader.next()
  csvReader.next()

  shifter = InferenceShifter()
  if plot:
    output = nupic_output.NuPICPlotOutput([modelName])
  else:
    output = nupic_output.NuPICFileOutput([modelName])

  counter = 0
  for row in csvReader:
    counter += 1
    if (counter % 100 == 0):
      print "Read %i lines..." % counter
    #timestamp = datetime.datetime.strptime(row[0], DATE_FORMAT)
    #consumption = float(row[1])
    subject=row[0]
    verb=row[1]
    obj=row[2]
    result = model.run({
      "subject": subject,
      "verb": verb,
      "object":obj
    })

    if plot:
      result = shifter.shift(result)

    print "result: " + repr(result.inferences["multiStepBestPredictions"])
    prediction = result.inferences["multiStepBestPredictions"][1]
    output.write([subject], [verb], [obj], [prediction])

  inputFile.close()
  output.close()
示例#13
0
def runModel(model):
    predictions = []
    inputFilePath = "RKIGTData.csv"
    inputFile = open(inputFilePath, 'rb')
    csvReader = csv.reader(inputFile)
    # Skip header
    csvReader.next()
    csvReader.next()
    csvReader.next()

    shifter = InferenceShifter()
    output = nupic_output.NuPICPlotOutput(["rki_faelle"])

    counter = 0
    for row in csvReader:
        counter += 1
        if (counter % 100 == 0):
            print("Read %i lines ..." % counter)
            time.sleep(1)
        timestamp = datetime.datetime.strptime(row[0], DATE_FORMAT)
        grippe = float(row[1])
        flu = float(row[2])
        faelle = float(row[3])
        result = model.run({
            "wstday": timestamp,
            "Grippe": grippe,
            "Influenza": flu,
            "faelle": faelle
        })

        result = shifter.shift(result)
        prediction = result.inferences["multiStepBestPredictions"][1]
        output.write(
            str(timestamp) + ',' + str(faelle) + ',' + str(prediction) + '\n')
        #output.write([timestamp], [faelle], [prediction])
    inputFile.close()
    output.close()