The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/perl/perl580/bin/perl -w

use Algorithm::Cluster qw/kcluster/;

use strict;

my $weight2 =  [ 1,1 ];

my $data2 =  [

	[ 1.1, 1.2 ],
	[ 1.4, 1.3 ],
	[ 1.1, 1.5 ],
	[ 2.0, 1.5 ],
	[ 1.7, 1.9 ],
	[ 1.7, 1.9 ],
	[ 5.7, 5.9 ],
	[ 5.7, 5.9 ],
	[ 3.1, 3.3 ],
	[ 5.4, 5.3 ],
	[ 5.1, 5.5 ],
	[ 5.0, 5.5 ],
	[ 5.1, 5.2 ],
];

my $mask2 =  [

	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
];


my $data3 =  [

        [ 1.1, 2.2, 3.3, 4.4, 5.5, ], 
        [ 3.1, 3.2, 1.3, 2.4, 1.5, ], 
        [ 4.1, 2.2, 0.3, 5.4, 0.5, ], 
        [ 12.1, 2.0, 0.0, 5.0, 0.0, ], 
];

my $mask3 =  [

        [ 1, 1, 1, 1, 1, ], 
        [ 1, 1, 1, 1, 1, ], 
        [ 1, 1, 1, 1, 1, ], 
        [ 1, 1, 1, 1, 1, ], 
];

my $weight3 =  [ 1,1,1,1,1 ];

my %params = (

	nclusters =>         3,
	transpose =>         0,
	npass     =>       100,
	method    =>       'a',
	dist      =>       'e',
);

my ($clusters, $centroids, $error, $found);
my ($i,$j);

$i=0;$j=0;
($clusters, $centroids, $error, $found) = kcluster(

	%params,
	data      =>    $data2,
	mask      =>    $mask2,
	weight    =>  $weight2,
);

$i=0;$j=0;
foreach(@{$centroids}) {
	$i++;$j=0;
	foreach(@{$_}) {
		printf("%2d,%2d: %7.3f\n",$i,$j++,$_);
	}
}

$i=0;$j=0;
foreach(@{$clusters}) {
	printf("%2d: %2d\n",$i++,$_);
}


($clusters, $centroids, $error, $found) = kcluster(

	%params,
	data      =>    $data3,
	mask      =>    $mask3,
	weight    =>  $weight3,
);

$i=0;$j=0;
foreach(@{$centroids}) {
	$i++;$j=0;
	foreach(@{$_}) {
		printf("%2d,%2d: %7.3f\n",$i,$j++,$_);
	}
}

$i=0;$j=0;
foreach(@{$clusters}) {
	printf("%2d: %2d\n",$i++,$_);
}


__END__