-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcaderno_knn.py
64 lines (46 loc) · 2.36 KB
/
caderno_knn.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- coding: utf-8 -*-
"""caderno_knn.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1tQfKWI2-55aYDzL2D8TUODnVS0jfslkH
O Método KNN (K vizinhos mais próximos) é um método de aprendizado de máquina supervisionado. Ao receber um novo dado, é verificado, pelo cálculo da distância dos fatores de entrada, quais os K vizinhos mais próximos, e o rótulo com mais ocorrências nesses K vizinhos será considerado como rótulo do novo dado.
Primeiro vamos criar dados com rótulos pra o treinamento
"""
distancia=[1, 3, 10, 8, 9, 20,50, 200,1000, 1500,500, 70,900, 400,1300,1200,1100,1230,930,300]
valor= [10,205,100,5000,30,39,700,50 ,10000,30, 6000,12,7000,34, 5300,9000,7000,6540,5300,600]
rotulo= [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,1,1,1,0]
"""Agora criaremos uma matriz com os dados para separar dados de trienamento de dados de teste."""
import numpy as np
#cria uma matriz com as colunas distância, valor e rótulo
dados= np.array(list(zip(distancia,valor,rotulo)))
print(dados)
"""agora vamos visualizar os dados"""
import matplotlib.pyplot as plt
plt.scatter(dados[:,0],dados[:,1],c=dados[:,2])
print(dados.shape)
"""Agora vamos separar dados de treinamento e teste."""
#primeiro é necessário embarallhar os dados
np.random.shuffle(dados)
dados_treino=dados[0:15,:]
dados_teste=dados[15:,:]
plt.scatter(dados_treino[:,0],dados_treino[:,1],c=dados_treino[:,2],marker='o')
plt.scatter(dados_teste[:,0],dados_teste[:,1],c=dados_teste[:,2],marker='^')
"""Agora vamos utilizar a o método KNN da biblioteca Scikitlearn"""
#importa a bilbioteca de KNN
from sklearn.neighbors import KNeighborsClassifier
#cria o modelo knn considerando k=3
knn = KNeighborsClassifier(n_neighbors=3)
#faz o treinamento
data=dados_treino[:,0:2] #dados de entrada
labels=dados_treino[:,2] #rótulos
knn.fit(data, labels)
#faz a predição de classificação para os dados de teste
predicao_teste = knn.predict(dados_teste[:,0:2])
#gera o gráfico
#dados de trienamento
plt.scatter(dados_treino[:,0],dados_treino[:,1],c=dados_treino[:,2],marker='o',s=100)
#predição do modelo para os dados de teste
plt.scatter(dados_teste[:,0],dados_teste[:,1],c=predicao_teste,marker='^',s=100)
#dados originais de teste
plt.scatter(dados_teste[:,0],dados_teste[:,1],c=dados_teste[:,2],marker='v',s=100)
plt.show()