Algorithm-SVM
view release on metacpan or search on metacpan
lib/Algorithm/SVM.pm view on Meta::CPAN
'epsilon-SVR' => 3,
'nu-SVR' => 4);
my %SVM_TYPESR = (0 => 'C-SVC',
1 => 'nu-SVC',
2 => 'one-class',
3 => 'epsilon-SVR',
4 => 'nu-SVR');
# Kernel types
my %KERNEL_TYPES = ('linear' => 0,
'polynomial' => 1,
'radial' => 2,
'sigmoid' => 3);
my %KERNEL_TYPESR = (0 => 'linear',
1 => 'polynomial',
2 => 'radial',
3 => 'sigmoid');
use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK @EXPORT $VERSION);
@ISA = qw(Exporter DynaLoader);
%EXPORT_TAGS = ( 'all' => [ qw( ) ] );
@EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
@EXPORT = qw( );
$VERSION = '0.13';
sub AUTOLOAD {
my $constname;
use vars qw($AUTOLOAD);
($constname = $AUTOLOAD) =~ s/.*:://;
croak "& not defined" if $constname eq 'constant';
my $val = constant($constname, @_ ? $_[0] : 0);
if ($! != 0) {
if ($! =~ /Invalid/ || $!{EINVAL}) {
$AutoLoader::AUTOLOAD = $AUTOLOAD;
goto &AutoLoader::AUTOLOAD;
}
else {
croak "Your vendor has not defined Algorithm::SVM macro $constname";
}
}
{
no strict 'refs';
# Fixed between 5.005_53 and 5.005_61
if ($] >= 5.00561) {
*$AUTOLOAD = sub () { $val };
}
else {
*$AUTOLOAD = sub { $val };
}
}
goto &$AUTOLOAD;
}
bootstrap Algorithm::SVM $VERSION;
=head1 NAME
Algorithm::SVM - Perl bindings for the libsvm Support Vector Machine library.
=head1 SYNOPSIS
use Algorithm::SVM;
# Load the model stored in the file 'sample.model'
$svm = new Algorithm::SVM(Model => 'sample.model');
# Classify a dataset.
$ds1 = new Algorithm::SVM::DataSet(Label => 1,
Data => [0.12, 0.25, 0.33, 0.98]);
$res = $svm->predict($ds);
# Train a new SVM on some new datasets.
$svm->train(@tset);
# Change some of the SVM parameters.
$svm->gamma(64);
$svm->C(8);
# Retrain the SVM with the new parameters.
$svm->retrain();
# Perform cross validation on the training set.
$accuracy = $svm->validate(5);
# Save the model to a file.
$svm->save('new-sample.model');
# Load a saved model from a file.
$svm->load('new-sample.model');
# Retreive the number of classes.
$num = $svm->getNRClass();
# Retreive labels for dataset classes
(@labels) = $svm->getLabels();
# Probabilty for regression models, see below for details
$prob = $svm->getSVRProbability();
=head1 DESCRIPTION
Algorithm::SVM implements a Support Vector Machine for Perl. Support Vector
Machines provide a method for creating classifcation functions from a set of
labeled training data, from which predictions can be made for subsequent data
sets.
=head1 CONSTRUCTOR
# Load an existing SVM.
$svm = new Algorithm::SVM(Model => 'sample.model');
# Create a new SVM with the specified parameters.
$svm = new Algorithm::SVM(Type => 'C-SVC',
Kernel => 'radial',
Gamma => 64,
C => 8);
An Algorithm::SVM object can be created in one of two ways - an existing
SVM can be loaded from a file, or a new SVM can be created an trained on
( run in 0.633 second using v1.01-cache-2.11-cpan-2398b32b56e )