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):