Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import math
- def euclidian(test_case, train_case):
- ans = 0
- size = len(test_case)
- for i in range(0, size - 1):
- ans += (test_case[i] - train_case[i])**2
- return ans
- def sortFirst(entry):
- return entry[0]
- def predict(distances):
- classes = []
- for i in range(0, k):
- classes.append(distances[i][1])
- pred = np.bincount(classes).argmax()
- return pred
- def knn(test_case):
- distances = []
- for train_case in train_dataset:
- ans = euclidian(test_case, train_case)
- distances.append([ans, train_case[90]])
- distances.sort(key=sortFirst)
- pred = predict(distances)
- if pred == test_case[90]:
- return True
- else:
- return False
- data = np.loadtxt('./movement_libras.data', delimiter=',')
- np.random.shuffle(data)
- test_size = math.ceil(len(data)/10)
- test_dataset = data[:test_size]
- train_dataset = data[test_size:]
- k = 7
- correct = 0
- wrong = 0
- for test_case in test_dataset:
- if knn(test_case):
- correct += 1
- else:
- wrong += 1
- print('Utilizando ', test_size, ' dados como teste em uma base de ', len(data), ' dados.')
- print('Acertos: ', correct, '\nErros: ', wrong)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement