# your code goes here
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import zscore
from sklearn.neighbors import KNeighborsClassifier as knclassifier
%matplotlib inline
datalabel = ['Sepal length', 'Sepal width', 'Petal length', 'Petal width', 'Class']
df = pd.read_csv(r"C:\Users\bit.LAB4-23\Downloads\iris.data", delimiter=",", header=None)
df.columns = datalabel
numeric_cols = df.select_dtypes(include=[np.number]).columns
df_norm = df[numeric_cols].apply(zscore)
df_norm['Class'] = df['Class']
trainset = df_norm.sample(frac=0.75, random_state=83)
testset = df_norm.drop(trainset.index)
accuracy = []
def classify(n=3):
knn = knclassifier(n_neighbors=n)
knn.fit(trainset[numeric_cols], trainset['Class'])
predictions = knn.predict(testset[numeric_cols])
acc = knn.score(testset[numeric_cols], testset['Class'])
accuracy.append(acc)
for x in range(3,21,2):
classify(x)
print(accuracy)
plt.plot(accuracy)
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCmltcG9ydCBudW1weSBhcyBucAppbXBvcnQgcGFuZGFzIGFzIHBkCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKZnJvbSBzY2lweS5zdGF0cyBpbXBvcnQgenNjb3JlCmZyb20gc2tsZWFybi5uZWlnaGJvcnMgaW1wb3J0IEtOZWlnaGJvcnNDbGFzc2lmaWVyIGFzIGtuY2xhc3NpZmllcgolbWF0cGxvdGxpYiBpbmxpbmUKZGF0YWxhYmVsID0gWydTZXBhbCBsZW5ndGgnLCAnU2VwYWwgd2lkdGgnLCAnUGV0YWwgbGVuZ3RoJywgJ1BldGFsIHdpZHRoJywgJ0NsYXNzJ10KZGYgPSBwZC5yZWFkX2NzdihyIkM6XFVzZXJzXGJpdC5MQUI0LTIzXERvd25sb2Fkc1xpcmlzLmRhdGEiLCBkZWxpbWl0ZXI9IiwiLCBoZWFkZXI9Tm9uZSkKZGYuY29sdW1ucyA9IGRhdGFsYWJlbApudW1lcmljX2NvbHMgPSBkZi5zZWxlY3RfZHR5cGVzKGluY2x1ZGU9W25wLm51bWJlcl0pLmNvbHVtbnMKZGZfbm9ybSA9IGRmW251bWVyaWNfY29sc10uYXBwbHkoenNjb3JlKQpkZl9ub3JtWydDbGFzcyddID0gZGZbJ0NsYXNzJ10KdHJhaW5zZXQgPSBkZl9ub3JtLnNhbXBsZShmcmFjPTAuNzUsIHJhbmRvbV9zdGF0ZT04MykKdGVzdHNldCA9IGRmX25vcm0uZHJvcCh0cmFpbnNldC5pbmRleCkKCmFjY3VyYWN5ID0gW10KZGVmIGNsYXNzaWZ5KG49Myk6CiAgICBrbm4gPSBrbmNsYXNzaWZpZXIobl9uZWlnaGJvcnM9bikKICAgIGtubi5maXQodHJhaW5zZXRbbnVtZXJpY19jb2xzXSwgdHJhaW5zZXRbJ0NsYXNzJ10pCiAgICBwcmVkaWN0aW9ucyA9IGtubi5wcmVkaWN0KHRlc3RzZXRbbnVtZXJpY19jb2xzXSkKICAgIGFjYyA9IGtubi5zY29yZSh0ZXN0c2V0W251bWVyaWNfY29sc10sIHRlc3RzZXRbJ0NsYXNzJ10pCiAgICBhY2N1cmFjeS5hcHBlbmQoYWNjKQoKZm9yIHggaW4gcmFuZ2UoMywyMSwyKToKICAgIGNsYXNzaWZ5KHgpCnByaW50KGFjY3VyYWN5KQpwbHQucGxvdChhY2N1cmFjeSk=