sklearnで2DデータのシンプルなSVMを可視化まで

sklearnには多くのclassifierが含まれている.SVMもその一つで、学習を行うだけなら数行でできる.

でもやっぱり学習させるなら表示まではしたいもの.

なのですっごいシンプルなコードにしながら最低限な表示までは入れておくコードをメモしておく.

今回は入力データは2次元のデータにしておく.高次元の表示はPCAをして次元圧縮するのが常でちょい複雑になるため今回はそこまで行わない.(また高次元の決定境界は正確に2Dに描画するのが難しい)

コード

学習をしているのはclf.fitで終わりで後半が学習した結果を表示するために頑張っている.

決定境界の可視化を試みているところは少しコードがのびているがやっていることは単純.

下の図のようにデータのx,yそれぞれの最大と最小の間に100個間隔を設けて各点がclf.predictでどう判定されるかを試している.その結果をzに入れてcontourfで表示している.

スクリーンショット 2018-05-19 10.53.59.png

それでは生のコード

結果は以下のように表示される.綺麗に半分くらいのところに決定境界が現れていて、データを適切に二分できているように見える.マージンが最大化されているのが確認できる.

image

About the author