Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos de Classificação
Introdução à Classificação
A classificação pode ser definida como o processo de prever classe ou categoria a partir dos valores
observados ou de determinados pontos de dados. A saída categorizada pode ter o formato "Preto" ou
"Branco" ou "spam" ou "sem spam".
Matematicamente, a classificação é a tarefa de aproximar uma função de mapeamento (f) das variáveis de
entrada (X) para as variáveis de saída (Y). Ele pertence basicamente ao aprendizado de máquina
supervisionado, no qual os destinos também são fornecidos junto com o conjunto de dados de entrada.
Um exemplo de problema de classificação pode ser a detecção de spam nos emails. Pode haver apenas duas
categorias de saída, "spam" e "sem spam"; portanto, essa é uma classificação do tipo binário.
Para implementar essa classificação, primeiro precisamos treinar o classificador. Neste exemplo, os emails
"spam" e "sem spam" seriam usados como dados de treinamento. Depois de treinar com sucesso o
classificador, ele pode ser usado para detectar um email desconhecido.
Lazy Learners
Como o nome sugere, esse tipo de aprendizado espera que os dados do teste sejam exibidos após o
armazenamento dos dados do treinamento. A classificação é feita somente após a obtenção dos dados de
teste. Eles gastam menos tempo treinando, mas mais tempo prevendo. Exemplos de lazy learners são o
vizinho mais próximo de K e o raciocínio baseado em casos.
Eager Learners
Ao contrário dos lazy learners, os eager learners constroem o modelo de classificação sem esperar que os
dados do teste sejam exibidos após o armazenamento dos dados do treinamento. Eles passam mais tempo
treinando, mas menos tempo prevendo. Exemplos de eager learners são:
Árvores de Decisão
Naïve Bayes
Redes Neurais Artificiais (RNA).
Para construir um classificador usando o scikit-learn, precisamos importá-lo. Podemos importá-lo usando o
seguinte script
Após importar o pacote necessário, precisamos de um conjunto de dados para criar o modelo de previsão de
classificação. Podemos importá-lo do conjunto de dados sklearn ou usar outro conforme nossa exigência.
Usaremos o banco de dados de diagnóstico de câncer de mama do sklearn. Podemos importá-lo com a ajuda
do seguinte script
Também precisamos organizar os dados e isso pode ser feito com a ajuda dos seguintes scripts
O comando a seguir imprimirá o nome dos rótulos 'maligno' e 'benigno' no caso de nosso banco de dados.
In [5]: print(label_names)
['malignant' 'benign']
Esses rótulos (labels) são mapeados para os valores binários 0 e 1. O câncer maligno é representado por 0 e
o câncer benigno é representado por 1.
Os nomes dos recursos e os valores desses rótulos (labels) podem ser vistos com a ajuda dos seguintes
comandos
In [6]: print(feature_names[0])
mean radius
A saída do comando acima é o nome dos recursos do rótulo 0, isto é, câncer maligno
Da mesma forma, os nomes dos recursos do rótulo podem ser produzidos da seguinte maneira:
In [7]: print(feature_names[1])
mean texture
A saída do comando acima é o nome dos recursos do rótulo 1, ou seja, câncer benigno -
In [8]: print(features[0])
Como precisamos testar nosso modelo em dados invisíveis, dividiremos nosso conjunto de dados em duas
partes:
Agora, o próximo comando dividirá os dados em dados de treinamento e teste. Neste exemplo, estamos
usando 40% dos dados para fins de teste e 60% dos dados para fins de treinamento
Depois de dividir os dados em treinamento e teste, precisamos construir o modelo. Vamos usar o algoritmo
Naïve Bayes para esta finalidade. Os seguintes comandos importarão o módulo GaussianNB
python-fit foi projetado para ajustar dados com frequência e rapidez. O módulo não foi projetado para grandes
quantidades de controle sobre o processo de minimização, mas tenta tornar os dados de ajuste simples. Se a
necessidade é de ajustar os dados várias vezes ao dia, todos os dias e apenas ver se o ajuste que parece
bom com para os dados, é ideal usá-lo.
Agora, para fins de avaliação, precisamos fazer previsões. Isso pode ser feito usando a função predict () da
seguinte maneira
[1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0
1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0
1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0
1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0
1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0
0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1
0 0 1 1 0 1]
As séries acima de 0s e 1s na saída são os valores previstos para as classes de tumor Maligno e Benigno
Podemos encontrar a precisão da construção do modelo na etapa anterior comparando as duas matrizes,
nomeadamente test_labels e preds . Usaremos a função precision_score () para determinar a precisão
0.9517543859649122
A seguir, são apresentadas algumas das métricas importantes de avaliação de classificação, entre as quais
você pode escolher com base em seu conjunto de dados e tipo de problema -
Matriz de Confusão
Matriz de confusão - é a maneira mais fácil de medir o desempenho de um problema de classificação em que a
saída pode ser de dois ou mais tipos de classes.
Uma matriz de confusão nada mais é do que uma tabela com duas dimensões viz. “Real” e “Previsto” e, além
disso, ambas as dimensões têm “Positivos Verdadeiros (TP)”, “Negativos Verdadeiros (TN)”, “Positivos Falsos
(FP)”, “Falsos Negativos (FN)”, como mostrado abaixo
Positivos verdadeiros (TP) - É o caso quando a classe real e a classe prevista de ponto de dados são 1.
Verdadeiros negativos (TN) - é o caso quando a classe real e a classe prevista de ponto de dados são 0.
Positivos falsos (FP) - É o caso quando a classe real do ponto de dados é 0 e a classe prevista do ponto
de dados é 1.
Negativos falsos (FN) - É o caso quando a classe real do ponto de dados é 1 e a classe prevista do ponto
de dados é 0.
Regressão logística
Máquina de vetores de suporte (SVM)
Árvore de decisão
Naïve Bayes
Random Forest
Aplicattions
Algumas das aplicações mais importantes dos algoritmos de classificação são as seguintes
Reconhecimento de fala
Reconhecimento de caligrafia
Identificação biométrica
Classificação de documentos
In [ ]: