Mercurial Hosting > traffic-intelligence
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')