vfg7 / knn

Um algoritmo simples para aprendizado de máquina

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Classificação de uma base de dados usando kNN

Implementando um algoritmo simples para classificação de uma base de dados. Escolhi construir o algoritmo do zero para fins de aprendizado. Existem bibliotecas muito boas para ML em Python - particularmente gosto muito da scikit learn) mas como kNN é relativamente simples, podemos aproveitar a disposição e construí-lo do zero.

O conjunto de dados escolhido foi um clássico de qualquer aspirante ao campo de IA / ML / afins, a base de dados das flores do gênero Iris (que você pode conferir aqui neste link: https://archive.ics.uci.edu/ml/datasets/iris)

iris-machinelearning

Achei até bonitinhas

kNN é uma técnica de aprendizado baseado em instâncias que assume que todos os elementos de um conjunto são pontos em um espaço de N dimensões, sendo N o número de atributos que descreve um elemento. O algoritmo funciona agrupando os dados próximos neste espaço teórico como similares e é bastante efetivo para conjunto de dados que são linearmente separáveis.

linha

A imagem acima já mostra graficamente uma falha da técnica kNN. o algoritmo sofre de algo chamado maldição da dimensionalidade que implica em dois problemas práticos:

  1. pode ser bastante custoso avaliar um novo ponto e classificá-lo.

  2. diferentemente de outros métodos, como árvores de decisão, que avaliam a classificação a partir de diferentes passos usando um subconjunto dos atributos em cada passo, o kNN usa todos os atributos de uma vez só. Esse fato pode causar uma má representação do conjunto de dados em que, digamos, apenas uma parcela dos atributos é relevante para a classificação. Assim, os outros atributos são apenas ruído, deslocando o ponto no espaço N-dimensional - oque pode causar gráficos feito o segundo na imagem acima.

Como toda técnica, o kNN tem seus prós e contras. Cabe ao programador colocar a ferramenta certa no lugar certo :)

Todas as fotos cortesia do google imagens :)

  • Python - versão 3.7.0

  • bibliotecas importadas: CSV

  • O Projeto foi feito usando o Pycharm, então sua reprodução poder ser facilmente feita clonando este repositório e abrindo-o como um novo projeto na mesma IDE.

About

Um algoritmo simples para aprendizado de máquina


Languages

Language:Python 97.5%Language:C 1.1%Language:Cython 1.0%Language:TeX 0.1%Language:JavaScript 0.1%Language:Tcl 0.1%Language:Jupyter Notebook 0.0%Language:Fortran 0.0%Language:CSS 0.0%Language:MATLAB 0.0%Language:HTML 0.0%Language:PowerShell 0.0%Language:Batchfile 0.0%Language:Makefile 0.0%