diff scripts/learn-motion-patterns.py @ 735:0e875a7f5759 dev

modified prototypeCluster algorithm to enforce similarity when re-assigning and to compute only the necessary similarities
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 12 Aug 2015 00:24:06 -0400
parents 1d4dcb5c8708
children 181bcb6dad3a
line wrap: on
line diff
--- a/scripts/learn-motion-patterns.py	Tue Aug 11 12:55:09 2015 -0400
+++ b/scripts/learn-motion-patterns.py	Wed Aug 12 00:24:06 2015 -0400
@@ -42,18 +42,23 @@
 lcss = utils.LCSS(metric = args.metric, epsilon = args.epsilon)
 nTrajectories = len(trajectories)
 
-similarities = np.zeros((nTrajectories, nTrajectories))
-for i in xrange(nTrajectories):
-    for j in xrange(i):
-        similarities[i,j] = lcss.computeNormalized(trajectories[i], trajectories[j])
-        similarities[j,i] = similarities[i,j]
+similarities = -np.ones((nTrajectories, nTrajectories))
+# for i in xrange(nTrajectories):
+#     for j in xrange(i):
+#         similarities[i,j] = lcss.computeNormalized(trajectories[i], trajectories[j])
+#         similarities[j,i] = similarities[i,j]
 
-prototypeIndices, labels = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, args.minClusterSize)
+prototypeIndices, labels = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, lambda x,y : lcss.computeNormalized(x, y), args.minClusterSize) # this line can be called again without reinitializing similarities
 
 if args.display:
+    from matplotlib.pyplot import figure
+    figure()
     for i,o in enumerate(objects):
         if i not in prototypeIndices:
-            o.plot(utils.colors[labels[i]])
+            if labels[i] < 0:
+                o.plot('kx')
+            else:
+                o.plot(utils.colors[labels[i]])
     for i in prototypeIndices:
             objects[i].plot(utils.colors[i]+'o')