método predict
Lição 8 de 19 do curso Introdução ao aprendizado de máquina da Coddy.
Desafio
MédioPreencha o método predict.
O método deve receber uma lista de X novos pontos.
Para cada novo ponto, calcule a distância entre este ponto e todos os outros pontos armazenados em self.points. Extraia os rótulos (labels) dos self.k pontos mais próximos.
Encontre o rótulo majoritário entre os pontos mais próximos; esta será a classe prevista.
Por exemplo, aqui estão nossos pontos e rótulos:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| labels | A | B | A | B | C | A |
Aqui está um novo ponto (3, 3)
A distância entre este ponto e todos os outros pontos é:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| distance from (3, 3) | 8 | 13 | 1 | 29 | 2 | 32 |
| labels | A | B | A | B | C | A |
Agora, se k = 3, precisamos encontrar os 3 pontos mais próximos do nosso novo ponto. Estes são os mais próximos: (3, 2), (1, 5) e (4, 4). Os rótulos correspondentes a esses pontos são: A, A, C. Temos 2 A's e 1 C. A é a maioria, então o novo ponto é classificado como A.
O método predict deve retornar uma lista de rótulos que foram classificados para os novos pontos.
Para encontrar o rótulo majoritário de uma lista de rótulos, use: max(set(labels), key = labels.count)
Experimente você mesmo
class KNN:
def __init__(self, k):
self.points = None
self.labels = None
self.k = k
def distance(self, point_a, point_b):
# Write your code here
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
def fit(self, X_train, y_train):
# Write your code here
self.points = X_train
self.labels = y_train
def predict(self, X_test):
passTodas as lições de Introdução ao aprendizado de máquina
Pratique por conta própria: Compilador de Python online