# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# ## KNN - N Nearest Neighbors

#importando as bibliotecas necessarias
import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt
import numpy as np
import warnings
warnings.filterwarnings('ignore')
# %matplotlib inline

#carregando a base de dados
iris = pd.read_csv('iris.csv')

#verificando os atributos
iris.head()

#importando a imagem para o projeto
from IPython.display import Image
Image(filename = "iris-data-set.png", width=500, height=500)

#verificando as informações de cada atributo
iris.info()

#exibindo o sumario dos dados
iris.describe()

# ## Dividindo os dados em treino e teste

from sklearn.model_selection import train_test_split
#primeiro parametro(passar a base de dados sem o valor da classe), segundo parametro(passa o valor da classe),
#terceiro parametro(define o tamanho do conjunto de dados utilizado para teste).
X_train, X_teste, Y_train, Y_teste = train_test_split(iris.drop('Species', axis=1), iris['Species'], test_size=0.3)

#verificando a forma dos dados utilizados para treino e teste (quantidade de linhas x colunas)
X_train.shape, X_teste.shape

#verificando a forma dos dados utilizados para treino teste (quantidade de linhas x colunas)
Y_train.shape, Y_teste.shape

# ## Instanciando o algoritimo KNN

from sklearn.neighbors import KNeighborsClassifier
#especificando o paramentro k(n_neighbors=3)
knn = KNeighborsClassifier(n_neighbors=3)

# ## Treinando o algoritimo

#Treinando o algoritimo
#X_train - dados de treino, Y_train - classes de treino
knn.fit(X_train, Y_train)

# ## Executando o KNN com o conjunto de teste

resultado = knn.predict(X_teste)
resultado

#realizando o teste com uma amostra qualquer
teste = np.array([[5.1,3.5,1.4,0.2]])
resultado_amostra = knn.predict(teste)
resultado_amostra

#verificando a probabilidade do resultado
knn.predict_proba(teste)

# ## Matriz de Confusão

#primeiro paramentro (Y_teste - classes utilizadas para teste)
#segundo paramentro (resultado - valores obtidos na predição)
pd.crosstab(Y_teste, resultado, rownames=['valor real'], colnames=['valor predito'],margins=True)

# ## Metricas de Classificação

from sklearn import metrics
print(metrics.classification_report(Y_teste, resultado))

StarcoderdataJupyterScriptsDedupFiltered