機械学習といえば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
以下の記事でも紹介しています。
Composer.json
次にcomposerを使ってインストールをしていきたいと思います。
PHP-ML - Machine Learning library for PHPのドキュメントにも書いてあるので、こちらを参考にします。
composer require php-ai/php-ml
これだけです。
プログラミング
では、サンプルプログラムを書いてみたいと思います。
上のページにも書いてありますが、K最近傍分類器を利用します。
k近傍法については、以下のWikipediaとかにも説明が書いてありますね。
ソースコード
以下のようなソースを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を作ってみたいと思います!