IMP logo
IMP Reference Guide  2.6.0
The Integrative Modeling Platform
kmeans/kmeans_example.py

Create a set and points and cluster it, printing the resulting cluster centers

1 ## \example kmeans/kmeans_example.py
2 # Create a set and points and cluster it, printing the resulting cluster
3 # centers
4 
5 from __future__ import print_function
6 import IMP
7 import IMP.kmeans
8 import sys
9 
10 IMP.setup_from_argv(sys.argv, "kmeans example")
11 
12 
13 def add_points(km):
14  # add data
15  km.add_data_pt([1, 2])
16  km.add_data_pt([10, 12])
17  km.add_data_pt([0, -1])
18  km.add_data_pt([11, 13])
19  km.add_data_pt([0, 0])
20  km.add_data_pt([1, 0])
21  km.add_data_pt([9.4, 10])
22  km.add_data_pt([9.2, 11])
23  km.add_data_pt([0, 0])
24 
25 IMP.set_log_level(IMP.PROGRESS)
26 km = IMP.kmeans.KMeans()
27 add_points(km)
28 # cluster data
29 k = 2
30 km.execute(k)
31 # print centers one by one
32 print("\nCenters:")
33 nCenters = km.get_number_of_centers() # this should actually be equal to k
34 print("Number of centers (k): ", nCenters)
35 for i in range(0, nCenters):
36  print("Center ", i, " ", km.get_center(i))
37 
38 # print data point assignments
39 n = km.get_number_of_data_points()
40 assignments = km.get_assignments()
41 sqrdist = km.get_squared_distance_to_centers()
42 print("Number of points: ", n)
43 for i in range(0, n):
44  print("Point ", i, ": ")
45  print(km.get_data_point(i))
46  print("Cluster center: ", assignments[i], \
47  " sqrt-dist: ", sqrdist[i])