# Clustering. Run all posiible cluster algorithms
# S.Chekanov
#
from java.awt import Color
from java.util import *
from jhplot import *
from jminhep.cluster import *
# create a data holder
data = DataHolder("Example")
# fill 3D data with Gaussian random numbers
rand = Random()
# make first cluster
for i in range(20):
a =[]
a.append( -2*rand.nextGaussian()-8)
a.append( 2*rand.nextGaussian()+5 )
a.append( 3*rand.nextGaussian()+10 )
data.add( DataPoint(a) )
del a
# make second cluster
for i in range(30):
a =[]
a.append( 10*rand.nextGaussian() +10)
a.append( 2*rand.nextGaussian()+20 )
a.append( 10*rand.nextGaussian()+5 )
data.add( DataPoint(a) )
del a
# make 3rd cluster
for i in range(10):
a =[]
a.append( 3*rand.nextGaussian() +10)
a.append( 2*rand.nextGaussian()+1 )
a.append( 2*rand.nextGaussian()+20 )
data.add( DataPoint(a) )
del a
c1=HPlot()
c1.setAutoRange()
p1=P1D(data,0,1) # show 1st and 2nd component
# show the table
# HTable(p1)
c1.draw(p1)
c1.visible(1)
# initialte partitioner
pat = Partition(data)
# set mode
pat.set(3, 0.001, 1.7, 1000)
# probability for membership (only for Fuzzy algorithm)
pat.setProbab(0.68)
pat.run(131)
print "algorithm: " + pat.getName()
# print "Compactness: " + str(pat.getCompactness())
# print "No of final clusters: " + str(pat.getNclusters())
Centers = pat.getCenters()
p2=P1D(Centers,"Centroids of clusters",0,1) # show 1st and 2nd component
p2.setColor(Color.red)
c1.draw(p2);
# HTable(Centers)
# jHepWork @S.Chekanov