Machine-learning-with-python-implementing-svm-in-python
ML-PythonでのSVMの実装
PythonでSVMを実装するには、次のように標準ライブラリのインポートから始めます-
次に、SVMを使用して分類するために、sklearn.dataset.sample_generatorから線形に分離可能なデータを持つサンプルデータセットを作成します-
以下は、100個のサンプルと2つのクラスターを持つサンプルデータセットを生成した後の出力です-
SVMは識別分類をサポートしていることを知っています。 2次元の場合は線を、複数次元の場合は多様体を見つけるだけで、クラスを互いに分割します。 次のように上記のデータセットに実装されています-
出力は次のとおりです-
上記の出力から、上記のサンプルを完全に識別する3つの異なるセパレーターがあることがわかります。
前述のように、SVMの主な目標は、データセットをクラスに分割して最大周辺超平面(MMH)を見つけることです。したがって、クラス間にゼロ線を引くのではなく、各線の周りにある幅のマージンを最も近い点まで描画できます。 それは次のように行うことができます-
出力の上記の画像から、判別分類器内の「マージン」を簡単に観察できます。 SVMはマージンを最大化するラインを選択します。
次に、Scikit-Learnのサポートベクトル分類子を使用して、このデータでSVMモデルをトレーニングします。 ここでは、線形カーネルを使用して、次のようにSVMに適合しています-
出力は次のとおりです-
さて、より良い理解のために、以下は2D SVCの決定関数をプロットします-
モデルを評価するには、次のようにグリッドを作成する必要があります-
次に、次のように決定境界とマージンをプロットする必要があります-
今、次のようにサポートベクターを同様にプロットします-
さて、この関数を使用して、次のようにモデルを適合します-
上記の出力から、SVM分類器がマージンのあるデータに適合していることがわかります。 破線とサポートベクトル、このフィットの重要な要素、破線に触れます。 これらのサポートベクトルポイントは、次のように分類子の_support_vectors__属性に格納されます-
出力は次のとおりです-