A maior rede de estudos do Brasil

Como converter atributos nominais em numeral no algoritmo knn?


3 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Você pode usar o KNN convertendo os valores categóricos em números. Se as categorias são binárias, codificá-las como 0–1 provavelmente está correto. Mas assim que você consegue mais de duas categorias, as coisas ficam problemáticas. Se os valores forem “Baixo”, “Intermediário” e “Alto” (ou, mais geralmente, se eles tiverem pelo menos uma ordem natural), você pode fazer sentido codificá-los numericamente como 1, 2, 3.

Mas se os valores são “Vermelho”, “Verde”, “Azul” (ou mais geralmente, algo que não tem ordem intrínseca), então simplesmente codificá-los como inteiros não funcionará. Uma possibilidade no caso é colocá-los igualmente espaçados ao redor de um círculo, desde então a distância entre qualquer par deles é a mesma.

Com N> 3valores, você pode querer colocá-los nos vértices de um simplex regular em Nespaço tridimensional. Em outras palavras, codifique-as como (1,0,…, 0), (0,1,0,…, 0),…, (0, 0, .., 0, 1). Então a distância entre qualquer par de valores é a mesma.

A principal coisa a se pensar é exatamente “qual é a definição apropriada de distância para meus dados?” Por definição, a KNN usa distâncias euclidianas. Dependendo da estrutura da sua combinação de dados numéricos e categóricos, isso pode ou não ser razoável.

Você pode usar o KNN convertendo os valores categóricos em números. Se as categorias são binárias, codificá-las como 0–1 provavelmente está correto. Mas assim que você consegue mais de duas categorias, as coisas ficam problemáticas. Se os valores forem “Baixo”, “Intermediário” e “Alto” (ou, mais geralmente, se eles tiverem pelo menos uma ordem natural), você pode fazer sentido codificá-los numericamente como 1, 2, 3.

Mas se os valores são “Vermelho”, “Verde”, “Azul” (ou mais geralmente, algo que não tem ordem intrínseca), então simplesmente codificá-los como inteiros não funcionará. Uma possibilidade no caso é colocá-los igualmente espaçados ao redor de um círculo, desde então a distância entre qualquer par deles é a mesma.

Com N> 3valores, você pode querer colocá-los nos vértices de um simplex regular em Nespaço tridimensional. Em outras palavras, codifique-as como (1,0,…, 0), (0,1,0,…, 0),…, (0, 0, .., 0, 1). Então a distância entre qualquer par de valores é a mesma.

A principal coisa a se pensar é exatamente “qual é a definição apropriada de distância para meus dados?” Por definição, a KNN usa distâncias euclidianas. Dependendo da estrutura da sua combinação de dados numéricos e categóricos, isso pode ou não ser razoável.

User badge image

Silvio

Há mais de um mês

nossa... eu acabei me esquecendo como se faz... vou pesquisar aqui e tentar te responder

Essa pergunta já foi respondida por um dos nossos especialistas