Mercurial Hosting > traffic-intelligence
diff scripts/learn-motion-patterns.py @ 953:989917b1ed85
assign and learn work
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 25 Jul 2017 17:36:07 -0400 |
parents | a9b2beef0db4 |
children | cc89267b5ff9 |
line wrap: on
line diff
--- a/scripts/learn-motion-patterns.py Mon Jul 24 21:22:18 2017 -0400 +++ b/scripts/learn-motion-patterns.py Tue Jul 25 17:36:07 2017 -0400 @@ -18,7 +18,7 @@ parser.add_argument('-e', dest = 'epsilon', help = 'distance for the similarity of trajectory points', type = float, required = True) parser.add_argument('--metric', dest = 'metric', help = 'metric for the similarity of trajectory points', default = 'cityblock') # default is manhattan distance parser.add_argument('-s', dest = 'minSimilarity', help = 'minimum similarity to put a trajectory in a cluster', type = float, required = True) -parser.add_argument('-c', dest = 'minClusterSize', help = 'minimum cluster size', type = int, default = None) +parser.add_argument('-c', dest = 'minClusterSize', help = 'minimum cluster size', type = int, default = 0) parser.add_argument('--learn', dest = 'learn', help = 'learn', action = 'store_true') parser.add_argument('--optimize', dest = 'optimizeCentroid', help = 'recompute centroid at each assignment', action = 'store_true') parser.add_argument('--random', dest = 'randomInitialization', help = 'random initialization of clustering algorithm', action = 'store_true') @@ -77,9 +77,11 @@ similarityFunc = lambda x,y : lcss.computeNormalized(x, y) # the next line can be called again without reinitializing similarities if args.learn: - prototypeIndices = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, similarityFunc, args.minClusterSize, args.optimizeCentroid, args.randomInitialization, initialPrototypeIndices) + prototypeIndices = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, similarityFunc, args.optimizeCentroid, args.randomInitialization, initialPrototypeIndices) # assignment is done if explicitly passed as argument or if working on the same database (starting prototypes from scratch and assigning the ) # (otherwise the matchings will not compare and one has to to matchings on a large scale at once) +else: + prototypeIndices = initialPrototypeIndices if args.assign: prototypeIndices, labels = ml.assignToPrototypeClusters(trajectories, prototypeIndices, similarities, args.minSimilarity, similarityFunc, args.minClusterSize) @@ -90,7 +92,7 @@ prototypes = [] for i in prototypeIndices: if args.assign: - nMatchings = clusterSizes[i] + nMatchings = clusterSizes[i]-1 else: nMatchings = 0 if i<len(initialPrototypes):