[NumPyの使い方] 14. k近傍法

NumPy
スポンサーリンク

NumPyによるk近傍法

データの生成

np.random.rand(5,2) 5×2の配列を生成。

生成した配列の可視化

2乗距離の計算

その1

ブロードキャストと集約関数を組み合わせているので複雑なコードとなっている。これを分割するとその2(↓)のようになる。

その2

xxとxxxの形はそれぞれ(5, 1, 2), (1, 5, 2)となる。これをブロードキャストで計算することで、各点のすべての組み合わせの座標ごとの差を計算できる。

各x,yの差を2乗して、合計することで2乗距離をもとめる。

同様のことを.sum(-1)とすることででき、(:,:,0)と(:,:,1)の合計を求めることができる。結果が同じであることがわかる。

近傍点の座標

np.argsort()を2乗距離の配列に適用することで各点に最も近い座標のインデックスを取得できる。

最も近い何点かの点

np.argpartition(dist_sq,K+1, axis=1)によって、2乗距離の配列の要素のうち、小さい要素K+1個のインデックスが、配列の左側に配置される。

最近傍の点の可視化

K=2

参考

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

コメント