é a palavra da moda agora. Algumas coisas incríveis estão sendo feitas com a ajuda do aprendizado de máquina. De ser nosso Assistente Pessoal , para decidir nosso rotas de viagem , ajudando-nos a fazer compras, ajudando-nos a administrar nossos negócios, a cuidar de nossos saúde e bem estar, O aprendizado de máquina está integrado à nossa existência diária em níveis tão fundamentais que, na maioria das vezes, nem percebemos que estamos contando com ele. Neste artigo, seguiremos uma abordagem de iniciante para implementar um classificador de aprendizado de máquina padrão em Python.
- Visão geral do aprendizado de máquina
- Um modelo para classificadores de aprendizado de máquina
- Problema de classificação de aprendizado de máquina
Visão geral do aprendizado de máquina
Aprendizado de máquina é um conceito que permite que a máquina aprenda com exemplos e experiências, e isso também sem ser programado explicitamente. Portanto, em vez de escrever o código, o que você faz é alimentar o algoritmo genérico com dados e o algoritmo / máquina constrói a lógica com base nos dados fornecidos.
O aprendizado de máquina envolve a capacidade das máquinas de tomar decisões, avaliar os resultados de suas ações e melhorar seu comportamento para obter resultados melhores sucessivamente.
O processo de aprendizagem ocorre de três maneiras principais
- Aprendizagem Supervisionada
- Aprendizagem Não Supervisionada
- Aprendizagem por Reforço
Um modelo para classificadores de aprendizado de máquina
As ferramentas de aprendizado de máquina são fornecidas de maneira bastante conveniente em uma biblioteca Python chamada scikit-learn, que são muito simples de acessar e aplicar.
Instale o scikit-learn por meio do prompt de comando usando:
pip install -U scikit-learn
Se você for um usuário anaconda, no prompt do anaconda você pode usar:
conda install scikit-learn
A instalação requer a instalação prévia dos pacotes NumPy e SciPy em seu sistema.
Pré-processando: A primeira e mais necessária etapa em qualquer análise de dados baseada em aprendizado de máquina é a parte de pré-processamento. A representação e a limpeza corretas dos dados são absolutamente essenciais para que o modelo de ML seja bem treinado e funcione de acordo com seu potencial.
Passo 1 - Importar bibliotecas necessárias
como encontrar palíndromo em java
import numpy as np import pandas as pd import matplotlib.pyplot as plt
Passo 2 - Importar o conjunto de dados
dataset = pd.read_csv ()
Em seguida, dividimos o conjunto de dados em variáveis independentes e dependentes. As variáveis independentes devem ser os dados de entrada e a variável dependente são os dados de saída.
X = dataset.iloc []. Valores y = dataset.iloc []. Valores
etapa 3 - Lidar com dados ausentes
O conjunto de dados pode conter valores em branco ou nulos, o que pode causar erros em nossos resultados. Portanto, precisamos lidar com essas entradas. Uma prática comum é substituir os valores nulos por um valor comum, como a média ou o valor mais frequente nessa coluna.
from sklearn.preprocessing import Imputer imputer = Imputer (missing_values = 'NaN', estratégia = 'mean', axis = 0) imputer = imputer.fit (X []) X [] = imputer.transform (X [])
Passo 4 - Converta variáveis categóricas em variáveis numéricas
from sklearn.preprocessing import LabelEncoder le_X = LabelEncoder () X [] = le_X.fit_transform (X []) labelencoder_y = LabelEncoder () y = labelencoder_y.fit_transform (y)
Agora, após a codificação, pode acontecer que a máquina assuma os dados numéricos como uma classificação para as colunas codificadas. Assim, para fornecer peso igual, temos que converter os números em vetores one-hot, usando a classe OneHotEncoder.
from sklearn.preprocessing import OneHotEncoder oneHE = OneHotEncoder (categorical_features = []) X = oneHE.fit_transform (X) .toarray ()
Etapa 5 - Executar dimensionamento
Esta etapa é para lidar com discrepâncias decorrentes de escalas incompatíveis das variáveis. Portanto, dimensionamos todos para o mesmo intervalo, de modo que recebam o mesmo peso ao serem inseridos no modelo. Usamos um objeto da classe StandardScaler para esse propósito.
from sklearn.preprocessing import StandardScaler sc_X = StandardScaler () X = sc_X.fit_transform (X)
Etapa 6 - Divida o conjunto de dados em dados de treinamento e teste
Como última etapa do pré-processamento, o conjunto de dados precisa ser dividido em um conjunto de treinamento e um conjunto de teste. A proporção padrão da divisão trem-teste é de 75% -25%. Podemos modificar de acordo com os requisitos. A função train_test_split () pode fazer isso por nós.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25)
Construção do modelo: Esta etapa é bastante simples. Assim que decidirmos qual modelo aplicar aos dados, podemos criar um objeto de sua classe correspondente e ajustar o objeto em nosso conjunto de treinamento, considerando X_train como entrada e y_train como saída.
__init__ em python
de sklearn. import classifier = () classifier.fit (X_train, y_train)
O modelo agora está treinado e pronto. Agora podemos aplicar nosso modelo ao conjunto de teste e encontrar a saída prevista.
y_pred = classifier.predict (X_test)
Visualizando resultados: O desempenho de um classificador pode ser avaliado pelos parâmetros de exatidão, precisão, recall e pontuação f1. Esses valores podem ser vistos usando um método conhecido como classificação_report (). Também pode ser visto como uma matriz de confusão que nos ajuda a saber quantos de quais categorias de dados foram classificados corretamente.
de sklearn.metrics importar confusão_matrix cm = confusão_matrix (y_test, y_pred) imprimir (cm) de sklearn.metrics importar classificação_report target_names = [] imprimir (classificação_report (y_test, y_pred, target_names = target_names))
Problema de classificador de aprendizado de máquina
Usaremos o conjunto de dados Iris muito popular e simples, contendo dimensões de flores em 3 categorias - Iris-setosa, Iris-versicolor e Iris-virginica. Existem 150 entradas no conjunto de dados.
# Importando as bibliotecas import numpy as np import matplotlib.pyplot as plt import pandas as pd # Importando o conjunto de dados dataset = pd.read_csv ('iris.csv')
Vamos ver o conjunto de dados agora.
dataset.head ()
Temos 4 variáveis independentes (excluindo o Id), a saber, os números das colunas 1-4, e a coluna 5 é a variável dependente. Assim, podemos separá-los.
X = dataset.iloc [:, 1: 5] .values y = dataset.iloc [:, 5] .values
Agora podemos dividir o conjunto de dados em treinamento e teste.
# Dividir o conjunto de dados no conjunto de treinamento e conjunto de teste de sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25)
Agora vamos aplicar um classificador de regressão logística ao conjunto de dados.
# Construindo e treinando o modelo de sklearn.linear_model import LogisticRegression classifier = LogisticRegression () classifier.fit (X_train, y_train) # Prevendo os resultados do conjunto de teste y_pred = classifier.predict (X_test)
A última etapa será analisar o desempenho do modelo treinado.
# Fazendo a matriz de confusão de sklearn.metrics import confused_matrix cm = confused_matrix (y_test, y_pred) print (cm)
Isso nos mostra que 13 entradas da primeira categoria, 11 da segunda e 9 da terceira categoria foram previstas corretamente pelo modelo.
# Gerando exatidão, precisão, recall e f1-score de sklearn.metrics import identification_report target_names = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] imprimir (classificação_report (y_test, y_pred, target_names = target_names) )
O relatório mostra os valores de precisão, recuperação, pontuação f1 e exatidão do modelo em nosso conjunto de teste, que consiste em 38 entradas (25% do conjunto de dados).
Parabéns, você criou e implementou com sucesso seu primeiro classificador de aprendizado de máquina em Python! Para obter conhecimento aprofundado sobre junto com seus vários aplicativos, você pode se inscrever no treinamento online Python ao vivo com suporte 24 horas por dia, 7 dias por semana e acesso vitalício.