def generateAvgModel(model, length, genNum=50): """Creates an average array for a given model. """ #Number states states = len(model.getEmission(0)) numSensors = int(math.log(states, 2)) a = numpy.zeros((length, numSensors), float) for i in range(genNum): tmp = model.sampleSingle(length) b = bbdata.uncompressData(tmp, numSensors) a += b a /= genNum return a
def drawHMMCluster(data, models, numSensors, \ writeLocation = "../output/out.png", \ spacing = 10, numberBase = 2, \ scaling = 5, \ cColor = (0, 255, 0), cCluster = (0, 0, 0)): """Draw all data associated with a given hidden markov model. Space the data by the value spacing. """ lenInstances = 0 #Get length of each image. for d in data: lenInstances += len(d) #Make the image iLen = lenInstances * scaling + spacing * len(data) if iLen == 0: iLen = 1 im = Image.new("RGB", ((numSensors + 1) * scaling + 50, iLen)) d = ImageDraw.Draw(im) currentY = 0 #Draw the instances for i in range(len(data)): #Invert the data to an array. tmpData = bbdata.uncompressData(data[i], numSensors, numberBase) #Caluclate values sigma = IntegerRange(0, numberBase**numSensors) values = hmmextra.hmmDistAll(data[i], models, sigma) values.sort() _drawArrayText(d, tmpData, 0, currentY, values, scale=scaling, cCluster=cCluster) currentY += tmpData.shape[0] * scaling + spacing im.save(writeLocation, "PNG")
def generateAvgModel(model, length, genNum = 50): """Creates an average array for a given model. """ #Number states states = len(model.getEmission(0)) numSensors = int(math.log(states, 2)) a = numpy.zeros((length, numSensors), float) for i in range(genNum): tmp = model.sampleSingle(length) b = bbdata.uncompressData(tmp, numSensors) a += b a /= genNum return a
def drawHMMCluster(data, models, numSensors, \ writeLocation = "../output/out.png", \ spacing = 10, numberBase = 2, \ scaling = 5, \ cColor = (0, 255, 0), cCluster = (0, 0, 0)): """Draw all data associated with a given hidden markov model. Space the data by the value spacing. """ lenInstances = 0 #Get length of each image. for d in data: lenInstances += len(d) #Make the image iLen = lenInstances * scaling + spacing * len(data) if iLen == 0: iLen = 1 im = Image.new("RGB", ((numSensors + 1) * scaling + 50, iLen)) d = ImageDraw.Draw(im) currentY = 0 #Draw the instances for i in range(len(data)): #Invert the data to an array. tmpData = bbdata.uncompressData(data[i], numSensors, numberBase) #Caluclate values sigma = IntegerRange(0, numberBase**numSensors) values = hmmextra.hmmDistAll(data[i], models, sigma) values.sort() _drawArrayText(d, tmpData, 0, currentY, values, scale = scaling, cCluster=cCluster) currentY += tmpData.shape[0] * scaling + spacing im.save(writeLocation, "PNG")
# val, counts = analysis.ratio(sData.values(), fn.models) #except Exception, e: # counts = [0] * len(fn.models) # val = [0] * len(fn.models) #tmpDoc += counts cd, td = bbdata.getdata(oldSplit, newSplit, \ comp = compress, \ sens = bbdata.allSensors, \ vDays = validDays, \ readLocation = dataDirectory) cd2 = bbdata.uncompressData(cd, 50) b = numpy.array(cd2) b = numpy.sum(b, axis = 0) tmpDoc = list(b) #if sum(tmpDoc) >= minBehaviour: # tdMatrix.append(tmpDoc) # print len(tdMatrix) firstRun = False tdMatrix.append(tmpDoc) sfirst = [s[0] for s in splits]
# val, counts = analysis.ratio(sData.values(), fn.models) #except Exception, e: # counts = [0] * len(fn.models) # val = [0] * len(fn.models) #tmpDoc += counts cd, td = bbdata.getdata(oldSplit, newSplit, \ comp = compress, \ sens = bbdata.allSensors, \ vDays = validDays, \ readLocation = dataDirectory) cd2 = bbdata.uncompressData(cd, 50) b = numpy.array(cd2) b = numpy.sum(b, axis=0) tmpDoc = list(b) #if sum(tmpDoc) >= minBehaviour: # tdMatrix.append(tmpDoc) # print len(tdMatrix) firstRun = False tdMatrix.append(tmpDoc) sfirst = [s[0] for s in splits]