Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
KNN_algorithm
Attempted to write KNN algorithm using python and built a flower classifier model.
I have commented the lines involving classifier code from the in-built scikit-learn library.
  • Loading branch information
MartianCoder-git authored Oct 3, 2020
commit 5de973adb3ced00ba7979567546ddfb718f72b17
65 changes: 65 additions & 0 deletions KNN_algorithm
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from scipy.spatial import distance

def euc(a,b):
return distance.euclidean(a, b)


class ScrappyKNN():
def fit(self, features_train, labels_train):
self.features_train = features_train
self.labels_train = labels_train

def predict(self, features_test):
predictions = []
for item in features_test:
label = self.closest(item)
predictions.append(label)

return predictions

def closest(self, item):
best_dist = euc(item, self.features_train[0])
best_index = 0
for i in range(1,len(self.features_train)):
dist = euc(item, self.features_train[i])
if dist < best_dist:
best_dist = dist
best_index = i
return self.labels_train[best_index]

iris = datasets.load_iris()

print(iris)

features = iris.data
labels = iris.target

print(features)
print(labels)

features_train, features_test, labels_train, labels_test = train_test_split(features, labels, test_size=.5)
#print(len(features))
#print(len(features_train))

my_classifier = ScrappyKNN()
#my_classifier = KNeighborsClassifier()
my_classifier.fit(features_train, labels_train)

prediction = my_classifier.predict(features_test)

print(prediction)
print(accuracy_score(labels_test, prediction))

iris1 = [[7.1, 2.9, 5.3, 2.4]] #virginica
iris_prediction = my_classifier.predict(iris1)

if iris_prediction == 0:
print("Setosa")
if iris_prediction == 1:
print("Versicolor")
if iris_prediction == 2:
print("Virginica")