KNN em Sklearn

KNN em Sklearn

“Uma suposição é feita pelo algoritmo KNN de que novos dados e dados existentes são comparáveis. Faz uso das métricas dos vizinhos mais próximos para isso. Este artigo discutirá o algoritmo KNN e a implementação de Sklearn.”

O que é knn?

Este algoritmo usa dados rotulados porque é um modelo de aprendizado de máquina supervisionado. A localização do novo número de vizinhos do novo Data Point determina como o algoritmo KNN categoriza -o. A distância euclidiana é usada para alcançar isso. A fórmula para a distância euclidiana entre dois pontos (a, b) e (x, y) é √ (a-x)2 + (por)2.

Onde é o knn usado?

KNN pode ser usado para enfrentar uma variedade de problemas. Por exemplo, na classificação, um novo ponto pode ser categorizado simplesmente olhando para a classe de seus vizinhos mais próximos. Os documentos mais comparáveis ​​a um determinado documento podem ser encontrados usando o KNN para verificar o plágio, descobrir espelhos, etc. O KNN pode ser usado em sistemas de recomendação para identificar produtos que são mais parecidos com um produto que um usuário não avaliou e depois determinar se o usuário se divertirá ou não. Existem inúmeros outros aplicativos, incluindo métodos de agrupamento, onde você pode aplicá -los.

Prós e contras do KNN?

Prós

    • Um algoritmo simples que apenas emprega a função de distância e o valor de k (o número inteiro ímpar) (euclidiano, como mencionado hoje).
    • É uma abordagem que é eficaz para pequenos conjuntos de dados.
    • Faça uso de “aprendizado preguiçoso.”Isso o torna mais rápido que as máquinas vetoriais de suporte (SVMS) e a regressão linear, porque o conjunto de dados de treinamento é mantido e usado ao fazer previsões.

Contras

    • Processando grandes conjuntos de dados demoram mais.
    • Pedidos de escala de recursos e falha em fazê -lo levarão a projeções imprecisas.
    • Dados barulhentos podem fazer com que os dados sejam super ou pouco ajustados.

Implementando KNN em Sklearn

Importar os métodos e classes necessários

de Sklearn.Ensemble Importar RandomForestClassifier
de Sklearn.Os conjuntos de dados importam make_classification
de Sklearn.Os vizinhos importam Kneighborsclassifier


Criando o conjunto de dados

X, y = make_classification (n_samples = 500, n_features = 4, n_informative = 2, n_redundant = 0, random_state = 0, shuffle = false)
impressão ('recursos são')
impressão (x)
impressão ('etiquetas são')
impressão (y)


Saída

Os recursos são

Array ([[0.44229321, 0.08089276, 0.54077359, -1.81807763],
[1.34699113, 1.48361993, -0.04932407, 0.2390336],
[-0.54639809, -1.1629494, -1.00033035, 1.67398571],
.. ,
[0.8903941, 1.08980087, -1.53292105, -1.71197016],
[0.73135482, 1.25041511, 0.04613506, -0.95837448],
[0.26852399, 1.70213738, -0.08081161, -0.70385904]])


Os rótulos são

Array ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])


Criando o modelo e fazendo previsões

Model = Kneighborsclassifier (n_neighbors = 5)
modelo.ajuste (x, y)
Imprimir (modelo.prever ([[0.5, 0.3, 0.2, 0.1]]))
Imprimir (modelo.Predict_Proba ([[0.5, 0.3, 0.2, 0.1]]))


Saída

[0]
[[0.8 0.2]]

Conclusão

Discutimos o algoritmo KNN, que é um algoritmo de aprendizado de máquina supervisionado. Vimos onde pode ser útil ou falhar. Mais tarde, também discutimos sua implementação em Sklearn Python.