Algorithm-FuzzyCmeans
view release on metacpan or search on metacpan
lib/Algorithm/FuzzyCmeans.pm view on Meta::CPAN
use UNIVERSAL::require;
our $VERSION = '0.02';
__PACKAGE__->mk_accessors($_) for qw(vectors centroids memberships m distance);
use constant DEFAULT_M => 2.0;
sub new {
my $class = shift;
my $self = $class->SUPER::new( {@_} );
$self->vectors({}) if !$self->vectors;
$self->centroids([]) if !$self->centroids;
$self->memberships({}) if !$self->memberships;
$self->m(DEFAULT_M) if !defined $self->m;
croak '`m\' parameter must be more than 1.0' if $self->m <= 1.0;
my $dist_class = delete $self->{distance_class};
$dist_class ||= 'Algorithm::FuzzyCmeans::Distance::Cosine';
$dist_class->require or croak $@;
$self->distance($dist_class->new());
( run in 1.188 second using v1.01-cache-2.11-cpan-49f99fa48dc )