b) Plot the data points on the x-y plane and prepare the element-to-element distance matrix d(xi,xj) = sqrt((xi-xj)^2 + (yi-yj)^2) (i,j=1,2,...,200) that will be the input for the clustering algorithm. Also assume each data point carries the same weight, i.e., p(xi) = 1/200 for all i. (2p)
c) Write a code (no restriction on the program language) to implement the Blahut-Arimoto algorithm to evaluate the clustering membership probability, p(x~|x), with fixed number of clusters, Nc, and compression-distortion tradeoff parameter, β. Your code should implement a multiple run each starting with random initial conditions. Note: Your source code should include clear comments/documentations to describe what you are evaluating. I may later randomly ask a few students, especially those without clear documentations, to demonstrate how their code works. (15p)
d) Run your code to construct the information curve for Nc = 2,3,4. Hint: Choose different values of β in between 1 to 40. (6p)
e) As we have already known that the correct number of clusters is 2, propose a reasonable way using the quantities evaluated from your code (e.g. I(X,~X), (d(x,~x))p(x,~x), the Lagrange function, etc.) and the information curves to correctly identify the number of clusters. You should clearly explain your rationale and state explicitly which quantities, graphs and/or curves are used in the identification. (5p)