Reputation: 2391
I have 100 x 13 vectors as input for K-Means Clustering which I have implemented in C#. I want to plot the result of my Clustering i.e. 13-Dimensional data points
I have seen example of 2D and 3D plot libraries like OxyPlot, ZedGraph etc. But could not find any example of plotting N-Dimensional data (where N > 3 and in my case N = 13).
Can any one suggest me how this can be achieved in C#?
Upvotes: 3
Views: 4628
Reputation: 8715
Well, do you have a 13-dimensional display? Then plotting 13 dimensional data would be easy.
Anything beyond 2 dimensions needs some kind of projection (well, actually even in 2d you do need some projection). If you add time (=animation), then you can visualize 3 dimensions reasonably, by rotating the projection.
So for visualizing more than 3 dimensions, there are two very popular techniques:
dimensionality reduction. This includes using PCA to identify axes of high variance. Alternatively, you might want to try multi-dimensional scaling
parallel coordinates. Each dimension is given an axis, but the axes do not intersect but are drawn in parallel. Each vector no longer is a point, but a line connecting the axes at the appropriate height. So the vector (1,2,0) is a polyline that goes from 1 on the first axis to 2 on the second axis and 0 on the third axis.
there is some more stuff, such as smiley faces, glyphs and similar visualization techniques. Get some lecture slides on data visualization and you should see some of these techniques.
To see an example of parallel coordinates, you can load your data set into ELKI and run k-means there. Thick lines should indicate the means in the parallel coordinates plot, while thin lines are the data instances.
Upvotes: 6