Skip to content

Commit

Permalink
create knn.py
Browse files Browse the repository at this point in the history
  • Loading branch information
BipanjitGill authored Oct 25, 2023
1 parent 691c849 commit 2aa13a7
Show file tree
Hide file tree
Showing 3 changed files with 184 additions and 0 deletions.
31 changes: 31 additions & 0 deletions ML_Algorithms/KNN/iris_test.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,Species
6.1,2.8,4.7,1.2,Iris-versicolor
5.7,3.8,1.7,0.3,Iris-setosa
7.7,2.6,6.9,2.3,Iris-virginica
6,2.9,4.5,1.5,Iris-versicolor
6.8,2.8,4.8,1.4,Iris-versicolor
5.4,3.4,1.5,0.4,Iris-setosa
5.6,2.9,3.6,1.3,Iris-versicolor
6.9,3.1,5.1,2.3,Iris-virginica
6.2,2.2,4.5,1.5,Iris-versicolor
5.8,2.7,3.9,1.2,Iris-versicolor
6.5,3.2,5.1,2,Iris-virginica
4.8,3,1.4,0.1,Iris-setosa
5.5,3.5,1.3,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
5.1,3.8,1.5,0.3,Iris-setosa
6.3,3.3,4.7,1.6,Iris-versicolor
6.5,3,5.8,2.2,Iris-virginica
5.6,2.5,3.9,1.1,Iris-versicolor
5.7,2.8,4.5,1.3,Iris-versicolor
6.4,2.8,5.6,2.2,Iris-virginica
4.7,3.2,1.6,0.2,Iris-setosa
6.1,3,4.9,1.8,Iris-virginica
5,3.4,1.6,0.4,Iris-setosa
6.4,2.8,5.6,2.1,Iris-virginica
7.9,3.8,6.4,2,Iris-virginica
6.7,3,5.2,2.3,Iris-virginica
6.7,2.5,5.8,1.8,Iris-virginica
6.8,3.2,5.9,2.3,Iris-virginica
4.8,3,1.4,0.3,Iris-setosa
4.8,3.1,1.6,0.2,Iris-setosa
121 changes: 121 additions & 0 deletions ML_Algorithms/KNN/iris_train.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,Species
4.6,3.6,1,0.2,Iris-setosa
5.7,4.4,1.5,0.4,Iris-setosa
6.7,3.1,4.4,1.4,Iris-versicolor
4.8,3.4,1.6,0.2,Iris-setosa
4.4,3.2,1.3,0.2,Iris-setosa
6.3,2.5,5,1.9,Iris-virginica
6.4,3.2,4.5,1.5,Iris-versicolor
5.2,3.5,1.5,0.2,Iris-setosa
5,3.6,1.4,0.2,Iris-setosa
5.2,4.1,1.5,0.1,Iris-setosa
5.8,2.7,5.1,1.9,Iris-virginica
6,3.4,4.5,1.6,Iris-versicolor
6.7,3.1,4.7,1.5,Iris-versicolor
5.4,3.9,1.3,0.4,Iris-setosa
5.4,3.7,1.5,0.2,Iris-setosa
5.5,2.4,3.7,1,Iris-versicolor
6.3,2.8,5.1,1.5,Iris-virginica
6.4,3.1,5.5,1.8,Iris-virginica
6.6,3,4.4,1.4,Iris-versicolor
7.2,3.6,6.1,2.5,Iris-virginica
5.7,2.9,4.2,1.3,Iris-versicolor
7.6,3,6.6,2.1,Iris-virginica
5.6,3,4.5,1.5,Iris-versicolor
5.1,3.5,1.4,0.2,Iris-setosa
7.7,2.8,6.7,2,Iris-virginica
5.8,2.7,4.1,1,Iris-versicolor
5.2,3.4,1.4,0.2,Iris-setosa
5,3.5,1.3,0.3,Iris-setosa
5.1,3.8,1.9,0.4,Iris-setosa
5,2,3.5,1,Iris-versicolor
6.3,2.7,4.9,1.8,Iris-virginica
4.8,3.4,1.9,0.2,Iris-setosa
5,3,1.6,0.2,Iris-setosa
5.1,3.3,1.7,0.5,Iris-setosa
5.6,2.7,4.2,1.3,Iris-versicolor
5.1,3.4,1.5,0.2,Iris-setosa
5.7,3,4.2,1.2,Iris-versicolor
7.7,3.8,6.7,2.2,Iris-virginica
4.6,3.2,1.4,0.2,Iris-setosa
6.2,2.9,4.3,1.3,Iris-versicolor
5.7,2.5,5,2,Iris-virginica
5.5,4.2,1.4,0.2,Iris-setosa
6,3,4.8,1.8,Iris-virginica
5.8,2.7,5.1,1.9,Iris-virginica
6,2.2,4,1,Iris-versicolor
5.4,3,4.5,1.5,Iris-versicolor
6.2,3.4,5.4,2.3,Iris-virginica
5.5,2.3,4,1.3,Iris-versicolor
5.4,3.9,1.7,0.4,Iris-setosa
5,2.3,3.3,1,Iris-versicolor
6.4,2.7,5.3,1.9,Iris-virginica
5,3.3,1.4,0.2,Iris-setosa
5,3.2,1.2,0.2,Iris-setosa
5.5,2.4,3.8,1.1,Iris-versicolor
6.7,3,5,1.7,Iris-versicolor
4.9,3.1,1.5,0.1,Iris-setosa
5.8,2.8,5.1,2.4,Iris-virginica
5,3.4,1.5,0.2,Iris-setosa
5,3.5,1.6,0.6,Iris-setosa
5.9,3.2,4.8,1.8,Iris-versicolor
5.1,2.5,3,1.1,Iris-versicolor
6.9,3.2,5.7,2.3,Iris-virginica
6,2.7,5.1,1.6,Iris-versicolor
6.1,2.6,5.6,1.4,Iris-virginica
7.7,3,6.1,2.3,Iris-virginica
5.5,2.5,4,1.3,Iris-versicolor
4.4,2.9,1.4,0.2,Iris-setosa
4.3,3,1.1,0.1,Iris-setosa
6,2.2,5,1.5,Iris-virginica
7.2,3.2,6,1.8,Iris-virginica
4.6,3.1,1.5,0.2,Iris-setosa
5.1,3.5,1.4,0.3,Iris-setosa
4.4,3,1.3,0.2,Iris-setosa
6.3,2.5,4.9,1.5,Iris-versicolor
6.3,3.4,5.6,2.4,Iris-virginica
4.6,3.4,1.4,0.3,Iris-setosa
6.8,3,5.5,2.1,Iris-virginica
6.3,3.3,6,2.5,Iris-virginica
4.7,3.2,1.3,0.2,Iris-setosa
6.1,2.9,4.7,1.4,Iris-versicolor
6.5,2.8,4.6,1.5,Iris-versicolor
6.2,2.8,4.8,1.8,Iris-virginica
7,3.2,4.7,1.4,Iris-versicolor
6.4,3.2,5.3,2.3,Iris-virginica
5.1,3.8,1.6,0.2,Iris-setosa
6.9,3.1,5.4,2.1,Iris-virginica
5.9,3,4.2,1.5,Iris-versicolor
6.5,3,5.2,2,Iris-virginica
5.7,2.6,3.5,1,Iris-versicolor
5.2,2.7,3.9,1.4,Iris-versicolor
6.1,3,4.6,1.4,Iris-versicolor
4.5,2.3,1.3,0.3,Iris-setosa
6.6,2.9,4.6,1.3,Iris-versicolor
5.5,2.6,4.4,1.2,Iris-versicolor
5.3,3.7,1.5,0.2,Iris-setosa
5.6,3,4.1,1.3,Iris-versicolor
7.3,2.9,6.3,1.8,Iris-virginica
6.7,3.3,5.7,2.1,Iris-virginica
5.1,3.7,1.5,0.4,Iris-setosa
4.9,2.4,3.3,1,Iris-versicolor
6.7,3.3,5.7,2.5,Iris-virginica
7.2,3,5.8,1.6,Iris-virginica
4.9,3.1,1.5,0.1,Iris-setosa
6.7,3.1,5.6,2.4,Iris-virginica
4.9,3,1.4,0.2,Iris-setosa
6.9,3.1,4.9,1.5,Iris-versicolor
7.4,2.8,6.1,1.9,Iris-virginica
6.3,2.9,5.6,1.8,Iris-virginica
5.7,2.8,4.1,1.3,Iris-versicolor
6.5,3,5.5,1.8,Iris-virginica
6.3,2.3,4.4,1.3,Iris-versicolor
6.4,2.9,4.3,1.3,Iris-versicolor
5.6,2.8,4.9,2,Iris-virginica
5.9,3,5.1,1.8,Iris-virginica
5.4,3.4,1.7,0.2,Iris-setosa
6.1,2.8,4,1.3,Iris-versicolor
4.9,2.5,4.5,1.7,Iris-virginica
5.8,4,1.2,0.2,Iris-setosa
5.8,2.6,4,1.2,Iris-versicolor
7.1,3,5.9,2.1,Iris-virginica
32 changes: 32 additions & 0 deletions ML_Algorithms/KNN/knn.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import numpy as np
import pandas as pd

def euclidean_distance(x1,x2):
distance=0
for i in range(len(x1)):
distance+=np.square(x1[i]-x2[i])
return distance

def knn(training_x,training_y,testing_x):
predictions=[]
for i in range(len(testing_x)):
distance=[]
for j in range(len(training_x)):
distance.append(euclidean_distance(testing_x[i],training_x[j]))
mydict={"class":training_y,"Distances":distance}
distance_df=pd.DataFrame.from_dict(mydict)
sorted_distance = distance_df.sort_values(by=["Distances"])
predict_labels=sorted_distance["class"][:5]
predicted_label=predict_labels.value_counts().index.tolist()[0]
predictions.append(predicted_label)
return predictions

train_df=pd.read_csv("Code-Forge\ML_Algorithms\KNN\iris_train.csv")
train_x=train_df.drop("Species",axis=1).to_numpy()
train_y=train_df["Species"].to_numpy()

test_df=pd.read_csv("Code-Forge\ML_Algorithms\KNN\iris_test.csv")
test_x=test_df.drop("Species",axis=1).to_numpy()
test_y=test_df["Species"].to_numpy()

predictions=knn(train_x,train_y,test_x)

0 comments on commit 2aa13a7

Please sign in to comment.