PHP-ML: машинное обучение на PHP | OTUS
⚡ Открываем подписку на курсы!
Проходите параллельно 3 онлайн-курса в месяц по цене одного.
Подробнее

Курсы

Программирование
Flutter Mobile Developer Подготовка к сертификации Oracle Java Programmer (OCAJP)
-8%
Алгоритмы и структуры данных
-12%
Web-разработчик на Python
-11%
Архитектура и шаблоны проектирования
-14%
JavaScript Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах»
-18%
iOS-разработчик. Базовый курс
-23%
Разработчик на Spring Framework
-23%
Python Developer. Basic
-16%
C# ASP.NET Core разработчик
-18%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
JavaScript Developer. Professional
-9%
Android Developer. Basic
-10%
Java Developer. Professional Разработчик C# AWS для разработчиков Highload Architect Reverse-Engineering. Professional CI/CD Vue.js разработчик Agile Project Manager Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Advanced Fullstack JavaScript developer
Инфраструктура
PostgreSQL
-10%
IoT-разработчик
-12%
Administrator Linux. Professional
-11%
Базы данных
-19%
Administrator Linux.Basic
-18%
Супер-интенсив «СУБД в высоконагруженных системах»
-18%
Супер-интенсив "SQL для анализа данных"
-16%
Software Architect
-12%
Сетевой инженер AWS для разработчиков Highload Architect Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

PHP-ML: машинное обучение на PHP

PHP_Deep_7.4-5020-68d475.png

Принято считать, что для нейронных сетей, искусственного интеллекта и машинного обучения следует использовать специальные языки, такие как R либо универсальный Python. Однако существуют библиотеки для работы с искусственным интеллектом и на PHP.

Одна из таких полноценных библиотек — PHP-ML. Этот проект разработан командой PHP-AI и представляет собой довольно известную библиотеку, которая появилась в 2017 году и сразу стала довольно популярной. При этом сами разработчики утверждают, что их детище стало «свежим подходом к Machine Learning на PHP».

Библиотека поддерживает версию интерпретатора не менее 7.0 и добавляется к проекту через Composer:

composer require php-ai/php-ml

Среди возможностей PHP-ML: • работа с ML-алгоритмами; • перекрестная валидация; • нейросети; • препроцессинг; • извлечение данных и много чего ещё.

Приведём примеры

Давайте рассмотрим PHP-ML на простейшем примере работы с классификацией:

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);

$classifier->predict([3, 2]); 
// возвращается 'b'

В следующем примере мы определяем язык, на котором написан текст:

<?php

    declare(strict_types=1);

    namespace PhpmlExamples;

    include 'vendor/autoload.php';

    use Phpml\Dataset\CsvDataset;
    use Phpml\Dataset\ArrayDataset;
    use Phpml\FeatureExtraction\TokenCountVectorizer;
    use Phpml\Tokenization\WordTokenizer;
    use Phpml\CrossValidation\StratifiedRandomSplit;
    use Phpml\FeatureExtraction\TfIdfTransformer;
    use Phpml\Metric\Accuracy;
    use Phpml\Classification\SVC;
    use Phpml\SupportVectorMachine\Kernel;

    $dataset = new CsvDataset('data/languages.csv', 1);
    $vectorizer = new TokenCountVectorizer(new WordTokenizer());
    $tfIdfTransformer = new TfIdfTransformer();

    $samples = [];
    foreach ($dataset->getSamples() as $sample) {
        $samples[] = $sample[0];
    }

    $vectorizer->fit($samples);
    $vectorizer->transform($samples);

    $tfIdfTransformer->fit($samples);
    $tfIdfTransformer->transform($samples);

    $dataset = new ArrayDataset($samples, $dataset->getTargets());

    $randomSplit = new StratifiedRandomSplit($dataset, 0.1);

    $classifier = new SVC(Kernel::RBF, 10000);
    $classifier->train($randomSplit->getTrainSamples(), $randomSplit->getTrainLabels());

    $predictedLabels = $classifier->predict($randomSplit->getTestSamples());

    echo 'Accuracy: '.Accuracy::score($randomSplit->getTestLabels(), $predictedLabels);

А вот как выполняется предсказание качества вина:

<?php

    declare(strict_types=1);

    namespace PhpmlExamples;

    include 'vendor/autoload.php';

    use Phpml\CrossValidation\StratifiedRandomSplit;
    use Phpml\Dataset\Demo\WineDataset;
    use Phpml\Metric\Accuracy;
    use Phpml\Regression\SVR;
    use Phpml\SupportVectorMachine\Kernel;

    $dataset = new WineDataset();
    $split = new StratifiedRandomSplit($dataset);

    $regression = new SVR(Kernel::RBF, 3, 0.1, 10);
    $regression->train($split->getTrainSamples(), $split->getTrainLabels());

    $predicted = $regression->predict($split->getTestSamples());

    // predicted target are regression result so to test accuracy we must round them

    foreach ($predicted as &$target) {
        $target = round($target, 0);
    }

    echo 'Accuracy: '.Accuracy::score($split->getTestLabels(), $predicted);

Более подробную информацию вы можете найти на GitHub или здесь(документация на русском).

Естественно, библиотека PHP-ML не сделает за вас всё и не избавит от необходимости изучать теоретические данные по нейросетям и машинному обучению. Но если вы php-разработчик и интересуетесь ML-направлением, она может вам пригодиться.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться