Кейс 3. Классификация с RubixML

Кейс 3. Классификация с RubixML

Теперь посмотрим, как тот же подход выглядит с использованием готовой реализации.

Обучение и предсказание

<?php
require 'vendor/autoload.php';

use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Classifiers\KNearestNeighbors;
use Rubix\ML\Kernels\Distance\Euclidean;

$samples = [
    [5, 2.1],
    [3, 1.8],
    [10, 6.5],
    [12, 7.0],
    [9, 5.8],
];

$labels = ['casual', 'casual', 'engaged', 'engaged', 'engaged'];

$dataset = new Labeled($samples, $labels);

$model = new KNearestNeighbors(3, new Euclidean());
$model->train($dataset);

$prediction = $model->predict([[8, 5.5]]);

print_r($prediction);

Здесь kNN уже упакован в аккуратный API, но концептуально происходит ровно то же самое:

– вычисление расстояний – выбор k соседей – голосование

Что важно вынести из кейсов

kNN – это алгоритм, который легко реализовать вручную и трудно оптимизировать без библиотек. Именно поэтому он идеально подходит для обучения:

– геометрии данных – роли метрик расстояния – локальных решений – компромисса между простотой и масштабируемостью

Поняв эти примеры, читателю уже гораздо легче воспринимать более сложные алгоритмы, которые делают те же самые вещи, но в более скрытом виде.

Last updated