6
$\begingroup$

I am having trouble getting FindClusters to find the right clustering for this set of data (and many other sets of data similar to it):

mydata=  {{0.0393548, 518600.}, {0.0878788, 338.}, {0.113012, 4479.63}, 
         {0.120947, 7030.38}, {0.121241, 2112.75}, {0.12131, 3114.}, 
         {0.128903, 3528.63}, {0.151097, 2857.25}, {0.154496, 5622.75}, 
         {0.167173, 1662.88}, {0.167782, 4528.25}, {0.52439, 85.875}, 
         {0.771838, 776.875}, {0.989017, 1857.63}, {1., 629.875}, 
         {1., 147.125}, {1., 523.5}, {1., 51.75},  {1., 33.}, 
         {1., 571.125}, {1., 899.75}, {1., 1196.38},{1., 3080.}}

By eye, when this data is plotted with ListLogLogPlot, there are three reasonably clear clusters, with one cluster being the single point in the upper-left part of the plot on the y-axis (sorry it's hard to see):

enter image description here

However, I can't seem to get FindClusters to find the right groupings even when I tell it there are three clusters (it also fails when I try to get the clustering without any specified number of clusters) :

Length /@ FindClusters[myData, 3]

{3, 14, 6}  (* correct output would be {1, 10, 12} *)

I've tried some renormalizations and log transformations of the data but I still can't get the correct groupings using FindClusters. Any suggestions for how to get this right?

$\endgroup$
1
  • 2
    $\begingroup$ The problem is that the distance between the left and right clusters is about 0.5 while the distance between the top and bottom of either cluster is over 1000... $\endgroup$
    – user484
    Commented Sep 1, 2014 at 22:44

1 Answer 1

10
$\begingroup$

I guess this is approximately what you want:

ListLogPlot[
 FindClusters[Standardize@mydata, 3, Method -> {"Agglomerate", "Linkage" -> "Complete"}] /. 
  Thread[Standardize@mydata -> mydata], 
   PlotStyle -> {Directive[Red, PointSize[Large]], 
                 Directive[Blue, PointSize[Large]], 
                 Directive[Green, PointSize[Large]]}, PlotRange -> All] 

Mathematica graphics

$\endgroup$
1
  • $\begingroup$ Yes, that's it. Standardize and Linkage are new to me. Thanks for your response. $\endgroup$
    – user13999
    Commented Sep 2, 2014 at 1:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.