
scikit-lean 分類 - 基本のlinear SVC
一番基本のLinearSVC (Support Vector Classifier)の例をフォローしながら練習してみる。元の例はここ。
[1] 必要なライブラリを読み出す。"ggplot"というstyleはR言語でよく使われるものらしい。matplotlibの、styleについてはここ、下のplotする時に出てくるcmap(colormap)についてはここで参照。
[2] 適当にxとyのデータ点を作ってみる。明らかに左下と右上の方で2つのデータの塊(クラスター)が見える。
[3][4] 上のx,yをnumpyのarrayで書く。yにはtargetの分類0(左下のクラスタ),1(上部のクラスタ)を書く。このtargetの値にちゃんと分類できるか?
[5] 以下の例ではSVM(Support Vector Machine)のkernalを"linear"にして分類を行う。LinearSVCとsvm.SVCのkernelをlinearに設定する最適化は実は異なるアプローチでされており(Ref)、大量のデータ(~million)がある場合はLinearSVCの方が効率的で、~20k程のデータ量以上になるとsvm.SVCは重くなるようだ(Ref)。
[6] classificationのデータをtargetにfitさせる。
[7] 適当なデータ点を作ってみて、ちゃんと0と1に分類されているか数字をみながらチェック。
[8] 導かれたcoef_とintercept_から分類の線を引く。
numpy.linespaceを使って、0から12まで50(default)分割した値をxx(=x0)に返し、そのxxでのyy(=x1)を計算し(Ref)、そのあとはplot。