Mercurial Hosting > traffic-intelligence
diff trafficintelligence/processing.py @ 1054:d13f9bfbf3ff
Retry
author | Wendlasida |
---|---|
date | Fri, 06 Jul 2018 18:42:58 -0400 |
parents | 25db2383e7ae |
children | 862b55a87e63 |
line wrap: on
line diff
--- a/trafficintelligence/processing.py Thu Jul 05 22:24:31 2018 -0400 +++ b/trafficintelligence/processing.py Fri Jul 06 18:42:58 2018 -0400 @@ -3,7 +3,7 @@ import numpy as np -from trafficintelligence import moving +from trafficintelligence import ml def extractSpeeds(objects, zone): speeds = {} @@ -17,3 +17,31 @@ else: objectsNotInZone.append(o) return speeds, objectsNotInZone + +def learnAssignMotionPatterns(learn, assign, objects, similarities, minSimilarity, similarityFunc, minClusterSize = 0, optimizeCentroid = False, randomInitialization = False, removePrototypesAfterAssignment = False, initialPrototypes = []): + '''Learns motion patterns + + During assignments, if using minClusterSize > 0, prototypes can change (be removed) + The argument removePrototypesAfterAssignment indicates whether the prototypes are removed or not''' + if len(initialPrototypes) > 0: + initialPrototypeIndices = list(range(len(initialPrototypes))) + trajectories = [p.getMovingObject().getPositions().asArray().T for p in initialPrototypes] + else: + initialPrototypeIndices = None + trajectories = [] + trajectories.extend([o.getPositions().asArray().T for o in objects]) + + if learn: + prototypeIndices = ml.prototypeCluster(trajectories, similarities, minSimilarity, similarityFunc, optimizeCentroid, randomInitialization, initialPrototypeIndices) + else: + prototypeIndices = initialPrototypeIndices + + if assign: + assignedPrototypeIndices, labels = ml.assignToPrototypeClusters(trajectories, prototypeIndices, similarities, minSimilarity, similarityFunc, minClusterSize) + if minClusterSize > 0 and removePrototypesAfterAssignment: # use prototypeIndices anyway + prototypeIndices = assignedPrototypeIndices + else: + labels = None + + return prototypeIndices, labels +