以前実装した単純パーセプトロンは線型分離可能な問題しか解けなかった。 それに対し、サポートベクターマシン (以下 SVM) はカーネル関数を用いることで線型分離不可能な問題も解けるようになっている。 また、単純パーセプトロンでは異なるクラスタを分離するための線がクラスタのギリギリに配置されることも多かったが、SVM ではそのマージンが最大になるようにできている。 今回は SVM を自分で書くのではなく scikit-learn のそれを使った。 $ pip install scikit-learn scipy matplotlib 以下のサンプルコードでは Iris データセットの Petal length と Petal width を元に Setosa と Versicolor の二品種を分類している。 #!/usr/bin/env python # -*- coding: utf-8
![Python: Iris データセットをサポートベクターマシンで分類してみる](https://cdn-ak-scissors.b.st-hatena.com/image/square/83a037f641442a4565af620cb99ec6f39d2d430c/height=288;version=1;width=512/https%3A%2F%2F64.media.tumblr.com%2F6ee3797e8c5cc87e06676e2d2171e6c8%2Ftumblr_inline_nlvf8gQB871r9o6wl_640.png)