HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: php, машинное обучение, нейросети, библиотека, ml, php-ml</p>
1 <p>Теги: php, машинное обучение, нейросети, библиотека, ml, php-ml</p>
2 <p>Принято считать, что для нейронных сетей, искусственного интеллекта и машинного обучения следует использовать специальные языки, такие как R либо универсальный Python. Однако существуют библиотеки для работы с искусственным интеллектом и на PHP.</p>
2 <p>Принято считать, что для нейронных сетей, искусственного интеллекта и машинного обучения следует использовать специальные языки, такие как R либо универсальный Python. Однако существуют библиотеки для работы с искусственным интеллектом и на PHP.</p>
3 <p>Одна из таких полноценных библиотек -<a>PHP-ML</a>. Этот проект разработан командой PHP-AI и представляет собой довольно известную библиотеку, которая появилась в 2017 году и сразу стала довольно популярной. При этом сами разработчики утверждают, что их детище стало "свежим подходом к Machine Learning на PHP".</p>
3 <p>Одна из таких полноценных библиотек -<a>PHP-ML</a>. Этот проект разработан командой PHP-AI и представляет собой довольно известную библиотеку, которая появилась в 2017 году и сразу стала довольно популярной. При этом сами разработчики утверждают, что их детище стало "свежим подходом к Machine Learning на PHP".</p>
4 <p>Библиотека поддерживает версию интерпретатора не менее 7.0 и добавляется к проекту через Composer:</p>
4 <p>Библиотека поддерживает версию интерпретатора не менее 7.0 и добавляется к проекту через Composer:</p>
5 composer require php-ai/php-ml<p>Среди<strong>возможностей PHP-ML</strong>: • работа с ML-алгоритмами; • перекрестная валидация; • нейросети; • препроцессинг; • извлечение данных и много чего ещё.</p>
5 composer require php-ai/php-ml<p>Среди<strong>возможностей PHP-ML</strong>: • работа с ML-алгоритмами; • перекрестная валидация; • нейросети; • препроцессинг; • извлечение данных и много чего ещё.</p>
6 <h2>Приведём примеры</h2>
6 <h2>Приведём примеры</h2>
7 <p>Давайте рассмотрим PHP-ML на простейшем примере<strong>работы с классификацией</strong>:</p>
7 <p>Давайте рассмотрим PHP-ML на простейшем примере<strong>работы с классификацией</strong>:</p>
8 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-&gt;train($samples, $labels); $classifier-&gt;predict([3, 2]); // возвращается 'b'<p>В следующем примере мы определяем<strong>язык, на котором написан текст</strong>:</p>
8 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-&gt;train($samples, $labels); $classifier-&gt;predict([3, 2]); // возвращается 'b'<p>В следующем примере мы определяем<strong>язык, на котором написан текст</strong>:</p>
9 &lt;?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-&gt;getSamples() as $sample) { $samples[] = $sample[0]; } $vectorizer-&gt;fit($samples); $vectorizer-&gt;transform($samples); $tfIdfTransformer-&gt;fit($samples); $tfIdfTransformer-&gt;transform($samples); $dataset = new ArrayDataset($samples, $dataset-&gt;getTargets()); $randomSplit = new StratifiedRandomSplit($dataset, 0.1); $classifier = new SVC(Kernel::RBF, 10000); $classifier-&gt;train($randomSplit-&gt;getTrainSamples(), $randomSplit-&gt;getTrainLabels()); $predictedLabels = $classifier-&gt;predict($randomSplit-&gt;getTestSamples()); echo 'Accuracy: '.Accuracy::score($randomSplit-&gt;getTestLabels(), $predictedLabels);<p>А вот как выполняется<strong>предсказание качества вина</strong>:</p>
9 &lt;?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-&gt;getSamples() as $sample) { $samples[] = $sample[0]; } $vectorizer-&gt;fit($samples); $vectorizer-&gt;transform($samples); $tfIdfTransformer-&gt;fit($samples); $tfIdfTransformer-&gt;transform($samples); $dataset = new ArrayDataset($samples, $dataset-&gt;getTargets()); $randomSplit = new StratifiedRandomSplit($dataset, 0.1); $classifier = new SVC(Kernel::RBF, 10000); $classifier-&gt;train($randomSplit-&gt;getTrainSamples(), $randomSplit-&gt;getTrainLabels()); $predictedLabels = $classifier-&gt;predict($randomSplit-&gt;getTestSamples()); echo 'Accuracy: '.Accuracy::score($randomSplit-&gt;getTestLabels(), $predictedLabels);<p>А вот как выполняется<strong>предсказание качества вина</strong>:</p>
10 &lt;?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-&gt;train($split-&gt;getTrainSamples(), $split-&gt;getTrainLabels()); $predicted = $regression-&gt;predict($split-&gt;getTestSamples()); // predicted target are regression result so to test accuracy we must round them foreach ($predicted as &amp;$target) { $target = round($target, 0); } echo 'Accuracy: '.Accuracy::score($split-&gt;getTestLabels(), $predicted);<p>Более подробную информацию вы можете найти на<a>GitHub</a>или<a>здесь</a>(документация на русском).</p>
10 &lt;?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-&gt;train($split-&gt;getTrainSamples(), $split-&gt;getTrainLabels()); $predicted = $regression-&gt;predict($split-&gt;getTestSamples()); // predicted target are regression result so to test accuracy we must round them foreach ($predicted as &amp;$target) { $target = round($target, 0); } echo 'Accuracy: '.Accuracy::score($split-&gt;getTestLabels(), $predicted);<p>Более подробную информацию вы можете найти на<a>GitHub</a>или<a>здесь</a>(документация на русском).</p>
11 <p>Естественно, библиотека PHP-ML не сделает за вас всё и не избавит от необходимости изучать теоретические данные по нейросетям и машинному обучению. Но если вы php-разработчик и интересуетесь ML-направлением, она может вам пригодиться.</p>
11 <p>Естественно, библиотека PHP-ML не сделает за вас всё и не избавит от необходимости изучать теоретические данные по нейросетям и машинному обучению. Но если вы php-разработчик и интересуетесь ML-направлением, она может вам пригодиться.</p>
12  
12