Mercurial Hosting > traffic-intelligence
annotate scripts/learn-poi.py @ 786:1f2b2d1f4fbf dev
added script and code to learn POIs
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 11 Mar 2016 17:38:48 -0500 |
parents | |
children | 0a428b449b80 |
rev | line source |
---|---|
786
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
2 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
3 import argparse |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
4 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
5 import numpy as np |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
6 from sklearn import mixture |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
7 import matplotlib.pyplot as plt |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
8 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
9 import storage, ml |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
10 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
11 parser = argparse.ArgumentParser(description='The program learns and displays Gaussians fit to beginnings and ends of object trajectories (based on Mohamed Gomaa Mohamed 2015 PhD). TODO: save the data') |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
12 parser.add_argument('-d', dest = 'databaseFilename', help = 'name of the Sqlite database file', required = True) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
13 parser.add_argument('-t', dest = 'trajectoryType', help = 'type of trajectories to display', choices = ['feature', 'object'], default = 'object') |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
14 parser.add_argument('-n', dest = 'nClusters', help = 'number of point clusters', required = True, type = int) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
15 parser.add_argument('--covariance-type', dest = 'covarianceType', help = 'type of covariance of Gaussian model', default = "full") |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
16 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
17 args = parser.parse_args() |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
18 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
19 objects = storage.loadTrajectoriesFromSqlite(args.databaseFilename, args.trajectoryType) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
20 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
21 beginnings = [] |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
22 ends = [] |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
23 for o in objects: |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
24 beginnings.append(o.getPositionAt(0).aslist()) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
25 ends.append(o.getPositionAt(int(o.length())-1).aslist()) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
26 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
27 beginnings = np.array(beginnings) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
28 ends = np.array(ends) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
29 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
30 gmm = mixture.GMM(n_components=args.nClusters, covariance_type = args.covarianceType) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
31 beginningModel=gmm.fit(beginnings) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
32 gmm = mixture.GMM(n_components=args.nClusters, covariance_type = args.covarianceType) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
33 endModel=gmm.fit(ends) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
34 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
35 ml.plotGMMClusters(beginningModel, beginnings) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
36 plt.axis('equal') |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
37 plt.title('Origins') |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
38 print('Origin Clusters:\n{}'.format(ml.computeClusterSizes(beginningModel.predict(beginnings), range(args.nClusters)))) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
39 |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
40 ml.plotGMMClusters(endModel, ends) |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
41 plt.axis('equal') |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
42 plt.title('Destinations') |
1f2b2d1f4fbf
added script and code to learn POIs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
43 print('Destination Clusters:\n{}'.format(ml.computeClusterSizes(endModel.predict(ends), range(args.nClusters)))) |