AI-XGBoost
view release on metacpan or search on metacpan
lib/AI/XGBoost/Booster.pm view on Meta::CPAN
package AI::XGBoost::Booster;
use strict;
use warnings;
use utf8;
our $VERSION = '0.11'; # VERSION
# ABSTRACT: XGBoost main class for training, prediction and evaluation
use Moose;
use AI::XGBoost::CAPI qw(:all);
use namespace::autoclean;
has _handle => ( is => 'rw',
init_arg => undef, );
sub update {
my $self = shift;
my %args = @_;
my ( $iteration, $dtrain ) = @args{qw(iteration dtrain)};
XGBoosterUpdateOneIter( $self->_handle, $iteration, $dtrain->handle );
return $self;
}
sub boost {
my $self = shift;
my %args = @_;
my ( $dtrain, $grad, $hess ) = @args{qw(dtrain grad hess)};
XGBoosterBoostOneIter( $self->_handle, $dtrain, $grad, $hess );
return $self;
}
sub predict {
my $self = shift;
my %args = @_;
my $data = $args{'data'};
my $result = XGBoosterPredict( $self->_handle, $data->handle );
my $result_size = scalar @$result;
my $matrix_rows = $data->num_row;
if ( $result_size != $matrix_rows && $result_size % $matrix_rows == 0 ) {
my $col_size = $result_size / $matrix_rows;
return [ map { [ @$result[ $_ * $col_size .. $_ * $col_size + $col_size - 1 ] ] } 0 .. $matrix_rows - 1 ];
}
return $result;
}
sub set_param {
my $self = shift;
my ( $name, $value ) = @_;
XGBoosterSetParam( $self->_handle, $name, $value );
return $self;
}
sub set_attr {
my $self = shift;
my ( $name, $value ) = @_;
XGBoosterSetAttr( $self->_handle, $name, $value );
return $self;
}
sub get_attr {
my $self = shift;
my ($name) = @_;
XGBoosterGetAttr( $self->_handle, $name );
( run in 2.617 seconds using v1.01-cache-2.11-cpan-364913b4093 )