Você está na página 1de 7

11/5/2019 6 - Algoritmos de Classificação

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.

Tipos de learners na classificação


Temos dois tipos de learners em relação aos problemas de classificação

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).

localhost:8888/nbconvert/html/Desktop/AULAS PYTHON DATA ANALITYCS/notebooks/AULA 3/PARTE 2/6 - Algoritmos de Classificação.ipynb?download=false 1/7


11/5/2019 6 - Algoritmos de Classificação

Construindo um classificador em Python


Com o Scikit-learn, uma biblioteca Python para aprendizado de máquina pode ser usada para criar um
classificador em Python. As etapas para criar um classificador em Python são as seguintes:

Etapa 1: Importando o Pacote Python Necessário

Para construir um classificador usando o scikit-learn, precisamos importá-lo. Podemos importá-lo usando o
seguinte script

In [1]: #importando a lib


import sklearn

Etapa 2: Importando Conjunto de Dados

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

In [2]: from sklearn.datasets import load_breast_cancer

O script a seguir carregará o conjunto de dados

In [3]: data = load_breast_cancer()

Também precisamos organizar os dados e isso pode ser feito com a ajuda dos seguintes scripts

In [4]: label_names = data['target_names']


labels = data['target']
feature_names = data['feature_names']
features = data['data']

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']

localhost:8888/nbconvert/html/Desktop/AULAS PYTHON DATA ANALITYCS/notebooks/AULA 3/PARTE 2/6 - Algoritmos de Classificação.ipynb?download=false 2/7


11/5/2019 6 - Algoritmos de Classificação

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 -

Podemos imprimir os recursos desses labels com a ajuda do seguinte comando

In [8]: print(features[0])

[1.799e+01 1.038e+01 1.228e+02 1.001e+03 1.184e-01 2.776e-01 3.001e-01


1.471e-01 2.419e-01 7.871e-02 1.095e+00 9.053e-01 8.589e+00 1.534e+02
6.399e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e+01
1.733e+01 1.846e+02 2.019e+03 1.622e-01 6.656e-01 7.119e-01 2.654e-01
4.601e-01 1.189e-01]

Etapa 3: Organizar dados em conjuntos de treinamento e teste

Como precisamos testar nosso modelo em dados invisíveis, dividiremos nosso conjunto de dados em duas
partes:

um conjunto de treinamento e um conjunto de testes. Podemos usar a função train_test_split () do pacote


sklearn python para dividir os dados em conjuntos. O comando a seguir importará a função

In [9]: from sklearn.model_selection import train_test_split

localhost:8888/nbconvert/html/Desktop/AULAS PYTHON DATA ANALITYCS/notebooks/AULA 3/PARTE 2/6 - Algoritmos de Classificação.ipynb?download=false 3/7


11/5/2019 6 - Algoritmos de Classificação

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

In [10]: train, test, train_labels, test_labels = train_test_split(features,labels,t


est_size = 0.40, random_state = 42)

Etapa 4: avaliação do modelo

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

In [11]: from sklearn.naive_bayes import GaussianNB

Agora, inicialize o modelo da seguinte maneira

In [12]: gnb = GaussianNB()

Em seguida, com a ajuda do seguinte comando, podemos treinar o modelo

In [13]: model = gnb.fit(train, train_labels)

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

In [14]: preds = gnb.predict(test)


print(preds)

[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

localhost:8888/nbconvert/html/Desktop/AULAS PYTHON DATA ANALITYCS/notebooks/AULA 3/PARTE 2/6 - Algoritmos de Classificação.ipynb?download=false 4/7


11/5/2019 6 - Algoritmos de Classificação

Etapa 5: Encontrar precisão

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

In [15]: from sklearn.metrics import accuracy_score


print(accuracy_score(test_labels,preds))

0.9517543859649122

A saída acima mostra que o classificador NaïveBayes tem 95,17% de precisão.

localhost:8888/nbconvert/html/Desktop/AULAS PYTHON DATA ANALITYCS/notebooks/AULA 3/PARTE 2/6 - Algoritmos de Classificação.ipynb?download=false 5/7


11/5/2019 6 - Algoritmos de Classificação

Métricas de Avaliação de Classificação


O trabalho não é concluído, mesmo se você tiver concluído a implementação do seu aplicativo ou modelo de
Machine Learning. Precisamos descobrir o quão eficaz é o nosso modelo? Pode haver diferentes métricas de
avaliação, mas devemos selecioná-las com cuidado, porque a escolha das métricas influencia a forma como o
desempenho de um algoritmo de aprendizado de máquina é medido e comparado.

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

A explicação dos termos associados à matriz de confusão são os seguintes -

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.

Vários algoritmos de classificação ML

Alguns importantes algoritmos de classificação de ML

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

localhost:8888/nbconvert/html/Desktop/AULAS PYTHON DATA ANALITYCS/notebooks/AULA 3/PARTE 2/6 - Algoritmos de Classificação.ipynb?download=false 6/7


11/5/2019 6 - Algoritmos de Classificação

In [ ]:

localhost:8888/nbconvert/html/Desktop/AULAS PYTHON DATA ANALITYCS/notebooks/AULA 3/PARTE 2/6 - Algoritmos de Classificação.ipynb?download=false 7/7

Você também pode gostar