はじめに
本記事では、scikit-learnのk近傍法(KNeighborsClassifier)を使用して、人工データに対するクラス分類と決定境界の可視化を行います。特に、k値(近傍点数)の変化に伴う決定境界の変動をmatplotlibのFuncAnimationでアニメーション表示する方法を解説します。
解説
モジュールのインポートなど
バージョン
データの生成
make_blobsを使用してデータを生成します。make_blobsの詳細については下記記事で解説しています。

random_state=24を指定することで上下に明確に分離したデータ群を生成しました。生成したデータを可視化すると、以下のような分布が得られます。

決定境界の表示
細かい間隔の格子状データをテストデータとして分類し、その結果を塗りつぶし等高線で表示することで決定境界を可視化します。詳細は以下で解説しています。

近傍データ数を1とした時の結果を図示すると以下のようになります。

近傍点数を変化させて分類データの収集
最初に空のリストZsを作成し、k=1から20まで変化させてクラス分類した結果をZsに順次追加していきます。
アニメーションの設定
最初に表示する図の設定
ax.contourf()
をcontfとしておきます。
アニメーション関数の設定
ax.contourf()を使用した後、contf.collectionsからremove()メソッドで古い塗りつぶし等高線を消去できます。Zは保存されたZsリストから取得し、reshapeで2次元に変換して等高線表示に適した形状にします。このZを使ってcontourfで描画し、このプロセスを繰り返すことでアニメーションを作成します。
アニメーションの表示
まとめ
本記事では、scikit-learnのKNeighborsClassifierを使用したk近傍法によるクラス分類と、近傍点数の変化に伴う決定境界の変動をアニメーション表示する方法を解説しました。k値の選択によって決定境界がどのように変化するかを視覚的に理解することで、機械学習モデルのパラメータ調整の重要性を学ぶことができます。この実装方法は、他の分類アルゴリズムの可視化にも応用可能です。
参考



コメント