今回はOpenCVを使って機械学習の一つであるk近傍法を実装し、irisデータの分類を行ってみたいと思います。
以下のコードや説明はOpenCVのチュートリアルを参考にしました。
(https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_ml/py_knn/py_knn_index.html)
以下のコードや説明はOpenCVのチュートリアルを参考にしました。
(https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_ml/py_knn/py_knn_index.html)
1. k近傍法とは
2つのデータをプロットしたとき以下のようになったとします。
このとき、新しいデータ「緑」は赤と青、どちらに分類されるのでしょうか。
「ぱっと見、近くにたくさん赤があるから、緑も赤なんじゃないかな?」と思う方もいらっしゃると思います。これは近傍法と呼ばれる手法です。
k近傍法では、新しいデータの近くのk点をチェックし、多数決をするアルゴリズムです。
例えばk=5の場合、以下のような図が描けるので、この緑は赤と推定されます。
「ぱっと見、近くにたくさん赤があるから、緑も赤なんじゃないかな?」と思う方もいらっしゃると思います。これは近傍法と呼ばれる手法です。
k近傍法では、新しいデータの近くのk点をチェックし、多数決をするアルゴリズムです。
例えばk=5の場合、以下のような図が描けるので、この緑は赤と推定されます。
2. 今回用いるデータについて
今回のデータはランダムに発生させるデータです。大きさが0~100で大きさ2のベクトルを25個発生させることにします。それを任意にクラス分けをし、そのあと、新しいデータがどちらのクラスに入るのかチェックします。
散布図
3.プログラムについて
以下にその実行プログラムを示します。
プログラムの実行結果は以下のようになります。
25個発生させたデータ
100個発生させたデータ
今回はOpenCVを使って機械学習を実験しました。k近傍法のようなプログラムもOpenCVで実装できるのは面白いですね!
ところで、pythonではscikit-learnと呼ばれる、機械学習専用のライブラリがあります。これについてのプログラムもまた紹介したいと思います。
ところで、pythonではscikit-learnと呼ばれる、機械学習専用のライブラリがあります。これについてのプログラムもまた紹介したいと思います。