K-Nearest Neighbours: Decision Boundaries

K-Nearest Neighbours: Decision Boundaries#

Twitter Handle LinkedIn Profile GitHub Profile Tag

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets, neighbors
# https://anaconda.org/conda-forge/mlxtend
from mlxtend.plotting import plot_decision_regions
import pandas as pd
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_13488/2568969536.py in <module>
      3 from sklearn import datasets, neighbors
      4 # https://anaconda.org/conda-forge/mlxtend
----> 5 from mlxtend.plotting import plot_decision_regions
      6 import pandas as pd

ModuleNotFoundError: No module named 'mlxtend'
def knn_comparision(data, k):
    X = data[['x1','x2']].values
    y = data['y'].astype(int).values
    clf = neighbors.KNeighborsClassifier(n_neighbors=k)
    clf.fit(X, y)

    # Plotting decision regions
    plot_decision_regions(X, y, clf=clf, legend=2)

    # Adding axes annotations
    plt.xlabel('X1')
    plt.ylabel('X2')
    plt.title('Knn with K='+ str(k))
    plt.show()
data = pd.read_csv('data/6.overlap.csv', names=['x1', 'x2', 'y'])
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
../../_images/c2b5c7a419927dfc3221d4f624ecf770c214c73b9c268b5a224d372c47c7ae53.png ../../_images/61bcf394b7b4caebe8748924cf2ff35cac2709e96f86b241007e7672e90013cd.png ../../_images/87e0f0eb9a99000c1c12524470f5b4f2aa03d2ca549cee9ef3938a2de367593d.png ../../_images/d65f3849476e34faf782e4579f4bd467ee3b1d6f390db273ddc59a08e5722d46.png ../../_images/212d5a0b3a11a60ce4e8b3a544263494600453127c811d3d0706bf72b841a35c.png
data = pd.read_csv('data/1.ushape.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
         x1        x2    y
0  0.031595  0.986988  0.0
1  2.115098 -0.046244  1.0
2  0.882490 -0.075756  0.0
../../_images/f348929aae72723ad580ed0723be714409491c5561f94f21924529b838d58150.png ../../_images/e80b8bebdde1947af7a69fc135b4e9d51af5a60e9c1675eb3b3862afc20a9e07.png ../../_images/62053255d0af08c19fe5ad45c2a2cbcb9379f2160b655694845821999e7bdef0.png ../../_images/73e4c4479ed08af4abbc5edf3216a8a33c80324274091e584f3e567d0f562b3b.png ../../_images/f9d0e76ab03042d910d8e8c4e3ed4168bf490edef3ebc33e1792266446b1fdb8.png
data = pd.read_csv('data/2.concerticcir1.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
         x1        x2    y
0 -0.382891 -0.090840  1.0
1 -0.020962 -0.477874  1.0
2 -0.396116 -1.289427  0.0
../../_images/3813d44336252c35c16dc0b76e81ead3df3d5d75b61de43f334e6e8225c0201f.png ../../_images/247a21fcf627ac037e22941809d82a0ed1dbb9404e73e4212c6a19d919560645.png ../../_images/59ec4a05f82cb6d7835db92166badfb8bcf33fe82fac1ca7926a5d45e9f68c65.png ../../_images/ea57922228702270e9b1a8363faf99cbddcb309c173581e31ed2c1672e385a24.png ../../_images/b53e681c5737d13ed710c8a415704ac6df523fa6a61264bfd56139aebf2400d5.png
data = pd.read_csv('data/3.concertriccir2.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
         x1        x2    y
0  0.700335 -0.247068  0.0
1 -3.950019  2.740080  1.0
2  0.150222 -2.157638  1.0
../../_images/6820c3650eb13a660d63d8122e93ddaa22e29916193117a903f727ae5ed484ac.png ../../_images/54b63dd98a74f5e94f9b227239a48afea26a1461e17129cf5b9be4c4f6069cf3.png ../../_images/8ef31714ea9b483efd5f29e563d56ef2f0385d9d1c64a2782aa9b7f0f085d163.png ../../_images/e467ad3fb92f40f9d2a85b3b9cc1dbf4ea11855a2ab96ab8178dccd846715d09.png ../../_images/96f613371d09ced3e69dc9c04e40e24fe99ca5e56de021dceeef72fd9266e337.png
data = pd.read_csv('data/4.linearsep.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
         x1        x2    y
0 -0.177497  0.930496  1.0
1  1.977424  1.766155  0.0
2  1.800024  1.700343  0.0
../../_images/d08ed25dc539f02e565c712ece4f9e2d25d75e9fbe5b1bfa3222d96fbd2c0959.png ../../_images/9996d62f197aa7c81b2e4e52d09b4d78e28f9836b46fcdd7c052ab8e30ecfcdf.png ../../_images/cd306f3203bcc097c172764047a3a498b5f2cc8626b1a1c2804e796ae6802430.png ../../_images/d19dfe41ec61e1ff3f8aa42f0a0a4ab6cd33b45e911d710174d6c314403a2ae2.png ../../_images/21ba4dfb95e0aeb51cb5272e8dbd5cd6cbf5116dc480f38aebe53fa1fb98c12b.png
data = pd.read_csv('data/5.outlier.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
          x1        x2  y
0 -17.897000  7.662423  0
1 -26.343161 -3.055257  0
2 -19.059771 -8.531838  0
../../_images/63bfa9146195d9568aa6766e51caeb3418e09e52c4cbc96079e816e9692f07b0.png ../../_images/171cdd365475184b97cebd07aa7f1b531adc6c9547a40c78c5f8fb818190d8e2.png ../../_images/4bf1bbbccb9957fe1c06f688c42e36ee4e76ee52bb96360757d733ac8d8a2e4c.png ../../_images/ba699891180e559aa180e2950940797918eb1559ab85a23c5bcfd597ca34fbe9.png ../../_images/437df8494669c6f5eab8680675bd7797e39683e5c626bc94339b29b76b0fe566.png
data = pd.read_csv('data/7.xor.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
         x1        x2    y
0  1.764052  0.400157 -1.0
1  0.978738  2.240893 -1.0
2  1.867558 -0.977278  1.0
../../_images/8e52a8e3804c44ff9661d091cefed83bb8a1edcfe5e80e2c5e20b25d7b6ba343.png ../../_images/068589b45344838e8c08aca99bc46bfe2a85a96284b81e274bfcb8cc96856ca1.png ../../_images/afdb534e5445d430846cc7c98bce57d5a330f7755d71c5072c1a545a4d79924e.png ../../_images/3c53eb19c06736441aff739142fcb06288df52fa705e50cb4183cd2692ae8d64.png ../../_images/c49e565a9e2f1f6ff60b205a146c9bc1978ec2cab7924dd68119f1c55366df9c.png
data = pd.read_csv('data/8.twospirals.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
         x1         x2  y
0 -2.543456 -10.816358  0
1  9.434466  -2.572000  0
2  3.368646 -10.194671  0
../../_images/995052f43fde08ceda93c17a6f69fe88d3db80db12ffc9ca26cc8b08c0e1c70d.png ../../_images/a7f1ecdf249deee67e1ce572845b906dbcf4d26d742b11a3d7e610b51d89b2c8.png ../../_images/b233ee432d269d19327732b6e648264f954ae574785703dacb5339b6b8b25e8b.png ../../_images/1b1f9ecf76d35c71297b2528ba22c6068b57d53857c28aaeb4e1615f1c27c2dd.png ../../_images/75d4f0472e80ecf5134416190078373968f1d2ad4e635635e55128de626f480f.png
data = pd.read_csv('data/9.random.csv', names=['x1', 'x2', 'y'])
print(data.head(3))
for i in [1, 5, 15, 30, 45]:
    knn_comparision(data, i)
      x1    x2    y
0  0.374  1.08  0.0
1  0.445  1.14  1.0
2  0.514  1.13  0.0
../../_images/c40a5da656f0e29dd9276f0ad3e8a70b3ce00fd8c8e9a26f3a57f808c912f025.png ../../_images/98227bb69a868cd854fce298ac2162fca280ac426d87e964661c5d9d9c0d02c8.png ../../_images/def8954914c8c974b810b3e2531a911e1adaf2d922e3517a9ed4471570d45963.png ../../_images/307d542babda5d6d6b1d3d80ab7994bb33e1ce9daa4fc1c1f10b12160ec92362.png ../../_images/cc83ee2d6b675c23abafa68782f0754b2ca4700d929a70ef74a183ddd3cb4005.png