Select Page

Introdução

Machine learning ou Aprendizado de máquina é um campo de pesquisa em ciência da computação, inteligência synthetic, e estatística. O foco do System Finding out é treinar algoritmos para aprender padrões e fazer previsões a partir de dados. System finding out é especialmente valioso porque ele nos leva a utilizar computadores para automatizar o processo de tomada de decisões.

Você encontrará aplicações de System finding out em todos os lugares. Netflix e Amazon usam gadget finding out para fazer novas recomendações de produtos. Bancos usam gadget finding out para detectar atividades fraudulentas em transações de cartões de crédito, e empresas de assistência à saúde estão começando a usar gadget finding out para monitorar, avaliar e diagnosticar pacientes.

Neste instructional vamos implementar um algoritmo simples de gadget finding out em Python utilizando Scikit-learn, uma ferramenta de gadget finding out para Python. Usando um banco de dados de informações sobre tumores de câncer de mama, iremos usar um classificador Naive Bayes (NB) que prevê se um tumor é maligno ou benigno.

No ultimate deste instructional, você saberá como construir o seu próprio modelo de gadget finding out em Python.

Pré-requisitos

Para completar este instructional, você precisará de:

Passo 1 — Importando o Scikit-learn

Vamos começar instalando o módulo Python Scikit-learn, um das melhores e mais bem documentadas bibliotecas de gadget finding out para Python.

Para começar com nosso projeto de codificação, vamos ativar nosso ambiente de programação Python 3. Certifique-se de estar no diretório onde o seu ambiente está localizado, e execute o seguinte comando:

Com seu ambiente de programação ativado, verifique se o módulo Scikit-learn já está instalado:

  • python -c "import sklearn"

Se o sklearn estiver instalado, este comando irá completar sem erros. Se ele não estiver instalado, você verá a seguinte mensagem de erro:

Output

Traceback (most up-to-date name remaining): Report "", line 1, in ImportError: No module named 'sklearn'

A mensagem de erro indica que o módulo sklearn não está instalado, então baixe o biblioteca usando o pip:

  • pip set up scikit-learn[alldeps]

Quando a instalação estiver concluída, inicie o Jupyter Pocket book:

No Jupyter, crie um novo Python Pocket book chamado ML Instructional. Na primeira célula do Pocket book, importe o módulo sklearn.

ML Instructional


import sklearn

Seu pocket book deve se parecer com a figura a seguir:

Agora que temos o sklearn importado em nosso pocket book, podemos começar a trabalhar com o dataset para o nosso modelo de gadget finding out.

Passo 2 — Importando o Dataset do Scikit-learn

O dataset com o qual estaremos trabalhando neste instructional é o Breast Cancer Wisconsin Diagnostic Database. O dataset inclui várias informações sobre tumores de câncer de mama, bem como rótulos de classificação como malignos ou benignos. O dataset tem 569 instâncias, ou dados, sobre 569 tumores e inclui informações sobre 30 atributos, ou características, tais como o raio do tumor, textura, suavidade, e área.

Utilizando este dataset, construiremos um modelo de gadget finding out para utilizar as informações sobre tumores para prever se um tumor é maligno ou benigno.

O Scikit-learn vem instalado com vários datasets que podemos carregar no Python, e o dataset que queremos está incluído. Importe e carregue o dataset:

ML Instructional


...

from sklearn.datasets import load_breast_cancer

# Carregar o dataset
information = load_breast_cancer()

A variável information representa um objeto Python que funciona como um dicionário. As chaves importantes do dicionário a considerar são os nomes dos rótulos de classificação (target_names), os rótulos reais (goal), os nomes de atributo/característica (feature_names), e os atributos (information).

Atributos são uma parte crítica de qualquer classificador. Os atributos capturam características importantes sobre a natureza dos dados. Dado o rótulo que estamos tentando prever (tumor maligno as opposed to benigno), os possíveis atributos úteis incluem o tamanho, raio, e a textura do tumor.

Crie novas variáveis para cada conjunto importante de informações e atribua os dados:

ML Instructional


...

# Organizar nossos dados
label_names = information['target_names']
labels = information['target']
feature_names = information['feature_names']
options = information['data']

Agora temos listas para cada conjunto de informações. Para entender melhor nosso conjunto de dados, vamos dar uma olhada em nossos dados imprimindo nossos rótulos de classe, o primeiro rótulo da instância de dados, nossos nomes de características, e os valores das características para a primeira instância de dados.

ML Instructional


...

# Olhando para os nossos dados
print(label_names)
print(labels[0])
print(feature_names[0])
print(options[0])

Você verá os seguintes resultados se você executar o código:

Como mostra a imagem, nossos nomes de categories são malignant and benign (maligno e benigno), que são então mapeados para valores binários de 0 e 1, onde 0 representa tumores malignos e 1 representa tumores benignos. Portanto, nossa primeira instância de dados é um tumor maligno cujo raio médio é 1.79900000e+01.

Agora que temos nossos dados carregados, podemos trabalhar com eles para construir nosso classificador de gadget finding out.

Passo 3 — Organizando Dados em Conjuntos

Para avaliar o desempenho de um classificador, você deve sempre testar o modelo em dados não visualizados. Portanto, antes da construção de um modelo, divida seus dados em duas partes: um conjunto de treinamento e um conjunto de testes.

Você u.s. o conjunto de testes para treinar e avaliar o modelo durante o estágio de desenvolvimento. Então você u.s. o modelo treinado para fazer previsões no conjunto de testes não visualizado. Essa abordagem lhe dá uma noção do desempenho e robustez do modelo.

Felizmente, o sklearn tem uma função chamada train_test_split(), que divide seus dados nesses conjuntos. Importe a função e em seguida utilize-a para dividir os dados:

ML Instructional


...

from sklearn.model_selection import train_test_split

# Dividir nossos dados
educate, take a look at, train_labels, test_labels = train_test_split(options,
                                                          labels,
                                                          test_size=0.33,
                                                          random_state=42)

A função divide aleatoriamente os dados usando o parâmetro test_size. Neste exemplo, agora temos um conjunto de testes (take a look at) que representa 33% do dataset unique. Os dados restantes (educate) formam então os dados de treinamento. Também temos os respectivos rótulos para ambas as variáveis educate/take a look at, ou seja, train_labels e test_labels.

Agora podemos passar para o treinamento do nosso primeiro modelo.

Passo 4 — Construindo e Avaliando o Modelo

Existem muitos modelos para gadget finding out, e cada modelo tem seus pontos fortes e fracos. Neste instructional, vamos nos concentrar em um algoritmo simples que geralmente funciona bem em tarefas de classificação binária, a saber Naive Bayes (NB).

Primeiro, importe o módulo GaussianNB. Em seguida inicialize o modelo com a função GaussianNB(), depois treine o modelo, ajustando-o aos dados usando gnb.have compatibility():

ML Instructional


...

from sklearn.naive_bayes import GaussianNB

# Inicializar nosso classificador
gnb = GaussianNB()

# Treinar nosso classificador
type = gnb.have compatibility(educate, train_labels)

Depois de treinarmos o modelo, podemos usar o modelo treinado para fazer previsões no nosso conjunto de teste, o que fazemos utilizando a função are expecting(). A função are expecting() retorna uma matriz de previsões para cada instância de dados no conjunto de testes. Podemos então, imprimir nossas previsões para ter uma ideia do que o modelo determinou.

Make the most of a função are expecting() com o conjunto take a look at e imprima os resultados:

ML Instructional


...

# Fazer previsões
preds = gnb.are expecting(take a look at)
print(preds)

Execute o código e você verá os seguintes resultados:

Como você vê na saída do Jupyter Pocket book, a função are expecting() retornou uma matriz de 0s e 1s que representa nossos valores previstos para a classe tumor (maligno vs. benigno).

Agora que temos nossas previsões, vamos avaliar o desempenho do nosso classificador.

Passo 5 — Avaliando a Precisão do Modelo

Usando a matriz de rótulos de classe verdadeira, podemos avaliar a precisão dos valores previstos do nosso modelo comparando as duas matrizes (test_labels vs. preds). Utilizaremos a função accuracy_score() do sklearn para determinar a precisão do nosso classificador de gadget finding out.

ML Instructional


...

from sklearn.metrics import accuracy_score

# Avaliar a precisão
print(accuracy_score(test_labels, preds))

Você verá os seguintes resultados:

Como você vê na saída, o classificador NB é 94.15% preciso. Isso significa que 94,15 porcento do pace o classificador é capaz de fazer a previsão correta se o tumor é maligno ou benigno. Esses resultados sugerem que nosso conjunto de características de 30 atributos são bons indicadores da classe do tumor.

Você construiu com sucesso seu primeiro classificador de gadget finding out. Vamos reorganizar o código colocando todas as declarações import no topo do Pocket book ou script. A versão ultimate do código deve ser algo assim:

ML Instructional


from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score

# Carregar o dataset
information = load_breast_cancer()

# Organizar nossos dados
label_names = information['target_names']
labels = information['target']
feature_names = information['feature_names']
options = information['data']

# Olhando para os nossos dados
print(label_names)
print('Magnificence label = ', labels[0])
print(feature_names)
print(options[0])

# Dividir nossos dados
educate, take a look at, train_labels, test_labels = train_test_split(options,
                                                          labels,
                                                          test_size=0.33,
                                                          random_state=42)

# Inicializar nosso classificador
gnb = GaussianNB()

# Treinar nosso classificador
type = gnb.have compatibility(educate, train_labels)

# Fazer previsões
preds = gnb.are expecting(take a look at)
print(preds)

# Avaliar a precisão
print(accuracy_score(test_labels, preds))

Agora você pode continuar trabalhando com seu código para ver se consegue fazer com que seu classificador tenha um desempenho ainda melhor. Você pode experimentar com diferentes subconjuntos de características ou mesmo tentar algoritmos completamente diferentes. Confira o website do Scikit-learn para mais ideias sobre gadget finding out.

Conclusão

Neste instructional, você aprendeu como construir um classificador de gadget finding out em Python. Agora você pode carregar dados, organizar dados, treinar, prever e avaliar classificadores de gadget finding out em Python usando o Scikit-learn. Os passos deste instructional devem ajudá-l. a.facilitar o processo de trabalhar com seus próprios dados no Python.

Traduzido Por Fernando Pimenta