概要
matplotlib で scikit-learn で学習したモデルの決定境界を可視化する方法について解説します。
1. 学習する
iris データセットを使用します。特徴量としては、Sepal Length、Sepal Width、Petal Length、Petal Width の4つのうち、Sepal Length、Petal Length の2変数を使用します。モデルはロジスティック回帰モデルを使用します。
In [1]:
test accuracy: 100.00%
2. 決定境界を描画する
以下のモデルの決定境界を描画するためのコードについて解説します。
In [2]:

1. サンプルを描画する
Axes.scatter()
でサンプルを描画します。
2. サンプルの描画範囲の各点の予測ラベルを計算する
サンプルの描画範囲の各点の予測ラベルを以下の手順で計算しあmす。
- グラフの x 軸、y 軸の描画範囲をそれぞれ
Axes.get_xlim()
、Axes.get_ylim()
で取得し、この範囲に格子状に点を numpy.meshgrid() で作成します。 - 作成した各点をモデルで推論し、その点のラベルを取得します。
LogisticRegression.predict()
の引数は (サンプル数, 特徴量の次元数) という2次元配列を想定しているため、形状を変更してから、推論します。 - 推論結果は、X, Y と同じ形状に戻します。
3. 等高線を描画する
2でサンプル (x, y) とその推論ラベル z のデータを作成することができました。これは次のような関数と考えることができます。

この関数を上から見た図、つまり等高線を考えるとこれが分類境界になります。
コメント