#!/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__