ポンコツエンジニアのごじゃっぺ開発日記。

いろいろポンコツだけど、気にするな。エンジニアの日々の開発などの記録を残していきます。 自動で収入を得られるサービスやシステムを作ることが目標!!

【PHP】機械学習ライブラリのPHP-MLを使ってサンプルプログラムを動かしてみる。

機械学習といえばPython!ですが、自分はPHPの方が使えるので、PHPで機械学習をしたいなと思いました! そこで、PHPで機械学習が使えるPHP-MLを試してみたいと思います。

環境構築

まずは、PHPが動く環境を用意したいと思います。 今回はdockerを使った作成していきたいと思います。

Dockerfile

まずはDockerfileです。(このブログでよく使っているDockerfileですが。)

FROM php:7.4.6-fpm
RUN pecl install redis-5.1.1 \
    && pecl install xdebug-2.8.1 \
    && pecl install ds \
    && docker-php-ext-enable redis xdebug ds
RUN cd /usr/bin \
    && curl -s http://getcomposer.org/installer | php \
    && ln -s /usr/bin/composer.phar /usr/bin/composer
WORKDIR /var/www

以下の記事でも紹介しています。

www.pnkts.net

Composer.json

次にcomposerを使ってインストールをしていきたいと思います。

PHP-ML - Machine Learning library for PHPのドキュメントにも書いてあるので、こちらを参考にします。

php-ml.readthedocs.io

composer require php-ai/php-ml

これだけです。

プログラミング

では、サンプルプログラムを書いてみたいと思います。

php-ml.readthedocs.io

上のページにも書いてありますが、K最近傍分類器を利用します。

k近傍法については、以下のWikipediaとかにも説明が書いてありますね。

ja.wikipedia.org

ソースコード

以下のようなソースをapp.phpという名前で書いてみました。

<?php

require_once __DIR__ . '/vendor/autoload.php';

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);

$result = $classifier->predict([3, 2]);

echo $result;

サンプルプログラムに、echoで結果を出力するプログラムを書いてみました。

実行結果

では実行してみます。

# php app.php
b

bという結果が出力されました。

ざっくり解説

めっちゃざっくり解説したいと思います。(というか自分もまだ詳しくまでは学べてないので。。)

2次元配列を用意して、以下のように、数値が増えるものをaというラベル、数値が減るものをbというラベルを付けたデータを学習させます。

[1,3], [1,4], [2,4] => a
[3,1], [4,1], [4,2] => b

その学習データに対して、[3,2]はどうなるでしょう?というプログラムかなと思います。

3→2は減少しているのでbというラベルになる、すなわち出力結果がbになっているかなと思います。

さいごに

環境構築はあっという間にできました! これから機械学習をいろいろしてみて、いろんなAIを作ってみたいと思います!

お問い合わせプライバシーポリシー制作物