The video shows a few runs of the algorithm with some random data. The data is generated by generated by generating a random amount of clusters between (2, k*2), where k is the number of centroids.
The datapoints are then divided into sets belonging to the clusters, and are at a random place within a buffer zone of the cluster point. The buffer zone is defined in random_dataset.py and can be changed easily.
If you are wondering why the circles has some black pixels in them it is because Pygame does not support filled antialiased circles for some reason, so it is the effect of a normal circle with a aa circle drawn over it.
You will need Pygame in order to run this.