Introdução
Neste laboratório, aprenderemos a utilizar Máquinas de Vetores de Suporte (SVM) para classificar uma amostra utilizando um kernel personalizado. Usaremos a biblioteca scikit-learn do Python para realizar a classificação SVM com um kernel personalizado. SVM é um algoritmo de aprendizagem de máquina popular utilizado para classificação, regressão e deteção de valores discrepantes. O SVM funciona criando um limite ou uma linha (hiperplano) que separa os dados em classes.
Dicas da Máquina Virtual
Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.
Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.
Importar Bibliotecas
Neste passo, importamos as bibliotecas necessárias para este laboratório. Usaremos numpy, matplotlib, scikit-learn e DecisionBoundaryDisplay.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay
Carregar Dados
Neste passo, carregaremos o conjunto de dados iris utilizando o módulo datasets do scikit-learn. Selecionaremos as duas primeiras características do conjunto de dados e atribuiremos-nas à variável X. Também atribuiremos a variável alvo a Y.
iris = datasets.load_iris()
X = iris.data[:, :2]
Y = iris.target
Criar Kernel Personalizado
Neste passo, criaremos um kernel personalizado. O kernel personalizado será um produto escalar de duas matrizes. Criaremos uma matriz M com os valores [[2, 0], [0, 1.0]]. Em seguida, multiplicaremos as matrizes X e Y por M e calculamos o seu produto escalar.
def my_kernel(X, Y):
"""
Criamos um kernel personalizado:
(2 0)
k(X, Y) = X ( ) Y.T
(0 1)
"""
M = np.array([[2, 0], [0, 1.0]])
return np.dot(np.dot(X, M), Y.T)
Criar Classificador SVM
Neste passo, criaremos uma instância do classificador SVM e ajustaremos nossos dados. Usaremos o kernel personalizado criado no passo anterior.
clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)
Plotar Fronteira de Decisão
Neste passo, plotaremos a superfície de decisão e os vetores de suporte. Usaremos o módulo DecisionBoundaryDisplay do módulo de inspeção do scikit-learn para plotar a fronteira de decisão. Também plotaremos os pontos de treinamento usando um gráfico de dispersão.
ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
clf,
X,
cmap=plt.cm.Paired,
ax=ax,
response_method="predict",
plot_method="pcolormesh",
shading="auto",
)
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.title("Classificação de 3 classes usando Máquina de Vetores de Suporte com kernel personalizado")
plt.axis("tight")
plt.show()
Resumo
Neste laboratório, aprendemos como utilizar Máquinas de Vetores de Suporte (SVM) para classificar uma amostra utilizando um kernel personalizado. Usamos a biblioteca scikit-learn para realizar a classificação SVM com um kernel personalizado. Carregamos o conjunto de dados iris, criamos um kernel personalizado, criamos uma instância do classificador SVM e ajustamos nossos dados, e plotamos a fronteira de decisão e os vetores de suporte. SVM é um algoritmo de aprendizado de máquina popular utilizado para classificação, regressão e detecção de outliers.