Vizinho mais próximo: Inteligência Artificial com PHP
Você já ouviu falar de vizinho mais próximo? Você vai aprender Inteligência Artificial, gerando caminhos mais curtos. Mas, desta vez, com PHP.

Você já ouviu falar de vizinho mais próximo? Nos meus estudos de Inteligência Artificial esta foi a primeira coisa (não me lembro o motivo) que tive contato! Mas além de ser algo que parece ser simples foi algo que achei super interessante, algo que vi N possibilidades que possam ser aplicadas. Eu, por gostar muito de aeronáutica, além de T.I, imaginei inúmeras possibilidades nesse campo! ? Depois, quero escrever um artigo sobre as coisas que imaginei referente a isso.
E você?! Consegue pensar em algo para a utilização desse algorítimo?! Não sabe o que é????? Continua lendo aí que eu te explico!
Esse foi um dos primeiros algorítimos que foram utilizados para determinar o problema mais óbvio que o próprio nome já diz ? “gerar caminhos mais curtos”. É possível definir também grupos, etc… Porém nem sempre é o ideal. Ah, mas como assim?! Bom, isso vai ficar pra outro artigo!
Talvez uma galera do R, Java, C++, Py, JS queira me sacrificar por eu dizer isso maaaas, sim, esse exemplo será feito com PHP ?. Isso mesmo,
“AAAHH MAS PHP DA PRA FAZER IA?”
A resposta é sim! Porém, é bem óbvio que com muitas limitações, pois, o PHP não foi projetado pra isso, depois falo mais a respeito das melhores linguagens para inteligência artificial.
Pra facilitar o nosso trabalho irei usar a biblioteca php/ML, uma biblioteca simples e vai facilitar nosso entendimento, pois não vou entrar em detalhes de cálculos neste artigo (farei isso em outro). Aqui, apenas vou mostrar como funciona o algorítimo e uma de suas possibilidades.
Para que possamos calcular quem será o vizinho mais próximo e entender melhor o algorítimo, precisamos utilizar o plano cartesiano! Isso mesmo, lembra lá do ensino médio? haha. Ou tava matando aula?! ?. Para quem não se lembra, esse é o famoso plano cartesiano:
Lembroou agoraa neeh?! ?
Certo, agora pra realizarmos esse algorítimo, precisaremos das entradas, que nada mais são do que ponto dentro desse plano. As nossas entradas serão [[1, 3], [1, 4], [2, 4], [3, 1], [5, 1], [7, 2]], consegue visualizar essas entradas que chamaremos de labels no plano? Não? Vou te dar uma ajudinha, então. Para refrescar a mente, a primeira entrada sempre é no eixo X e o segundo dado se refere ao eixo Y. No plano, as nossas entradas ficariam assim:
Bem melhor de visualizar, não acham? Muito obrigado René Descartes ?.
Agora vamos imaginar uma situação real. Imaginem que os pontos são casas espalhadas em um mapa e A, B, C e D, pertencem ao bairro “barrudo” e E e F pertencem ao bairro “caminho”, a prefeitura classifica a casa no bairro de a cordo a proximidade da casa com o grupo de casas já existentes. Certa construtora resolve criar uma casa no ponto [3,3], conseguem dizer a qual bairro essa casa pertenceria?!
Vamos ao plano para ver em qual local essa casa ficaria situada, adicionamos a entrada no plano. E aí, consegue imaginar aonde ficaria?? Não conseguiu?! Então segue imagem:
Visualizando a olho nu é bem fácil perceber qual bairro a casa pertenceria! A imagem abaixo nos ajudará a ter uma visão melhor:
Vemos que o G [novo ponto adicionado] está dentro do mesmo bairro que pertence as casas A, B, C e D. Isso provavelmente mais pra frente geraria o que chamamos de viés (mas é assunto para um outro artigo).
Mas, fizemos todo o procedimento na mão, e se quiséssemos automatizar isso, como seria feito? Como disse no começo do artigo, temos uma excelente biblioteca a PHP/ML. Ela é muito simples de ser instalada e pode ser feita via composer, simplesmente com o código:
composer require php-ai/php-ml
Após instalada a biblioteca, iremos referenciar e utilizar as seguintes classes, KNearestNeighbors e Minkowski para corrigir a distância. Abaixo o código comentado em PHP para que vocês possam ver como esse processo é bem simples quando utilizamos essa biblioteca:
Bem simples, não é mesmo? Espero que tenham gostado deste artigo, espero escrever mais artigos sobre AI. Irei usar outras linguagens também, pois não tenho preconceito com linguagem. Afinal, a melhor linguagem é aquela que atende a sua necessidade, qualquer dúvida ficarei à disposição pra responder cada um de vocês, só deixar nos comentários ou me chamar no Linkedin… até a próxima, pessoal…..








