The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

RPerl Quick-Start Checklist & Guide

Restricted Perl, The Optimizing Perl 5 Compiler

DESCRIPTION

RPerl is a compiler. For general info:

https://github.com/wbraswell/rperl/blob/master/README.md

http://rperl.org

SYNOPSIS, KNN 2D BRUTE FORCE

Filename script/demo/k_nearest_neighbors_2D.pl:

    #!/usr/bin/env perl
    
    # MLPerl, K Nearest Neighbors 2D, Demo Driver
    # Load training points, find K nearest neighbors to classify test points

    use RPerl;  use strict;  use warnings;
    our $VERSION = 0.007_000;

    use MLPerl::PythonShims qw(concatenate for_range);
    use MLPerl::Classifier::KNeighbors;

    # read external data
    my string $file_name = $ARGV[0];
    open my filehandleref $FILE_HANDLE, '<', $file_name
        or die 'ERROR EMLKNN2D10: Cannot open file ' . q{'} . $file_name . q{'} . ' for reading, ' . $OS_ERROR . ', dying' . "\n";
    read $FILE_HANDLE, my string $file_lines, -s $FILE_HANDLE;
    close $FILE_HANDLE
        or die 'ERROR EMLKNN2D11: Cannot close file ' . q{'} . $file_name . q{'} . ' after reading, ' . $OS_ERROR . ', dying' . "\n";

    # initialize local variables to hold external data
    my number_arrayref_arrayref $train_data_A = undef;
    my number_arrayref_arrayref $train_data_B = undef;
    my number_arrayref_arrayref $test_data = undef;

    # load external data
    eval($file_lines);

    # format train data, concatenate all train data arrays
    my number_arrayref_arrayref $train_data = concatenate($train_data_A, $train_data_B);

    # generate train data classifications
    my string_arrayref $train_classifications = concatenate(for_range('0', (scalar @{$train_data_A})), for_range('1', (scalar @{$train_data_B})));

    # create KNN classifier
    my integer $k = 3;
    my object $knn = MLPerl::Classifier::KNeighbors->new();  $knn->set_n_neighbors($k);  $knn->set_metric('euclidean');

    # fit KNN classifier to training data
    $knn->fit($train_data, $train_classifications);

    # generate and display KNN classifier's predictions
    my string_arrayref $tests_classifications = $knn->predict($test_data);
    foreach my string $test_classifications (@{$tests_classifications}) { print $test_classifications, "\n"; }

SYNOPSIS, KNN 2D BRUTE FORCE, EXECUTE

    $ ./script/demo/k_nearest_neighbors_2D.pl ./script/demo/k_nearest_neighbors_2D_data_25_25_50.pl

SYNOPSIS, KNN 2D BRUTE FORCE, COMPILE & EXECUTE

    $ export RPERL_DEBUG=1 && export RPERL_VERBOSE=1
    $ rperl -V lib/MLPerl/Classifier/KNeighbors.pm
    $ ./script/demo/k_nearest_neighbors_2D.pl ./script/demo/k_nearest_neighbors_2D_data_25_25_50.pl

SEE ALSO

RPerl

rperl

AUTHOR

William N. Braswell, Jr.

mailto:wbraswell@NOSPAM.cpan.org