Introdução
Neste laboratório, utilizaremos o scikit-learn para criar um conjunto de dados separável de duas classes e traçar o hiperplano de separação de margem máxima utilizando um classificador de Máquinas de Vetores de Suporte (SVM) com um kernel linear. O SVM é um poderoso algoritmo de classificação que encontra a melhor fronteira ou hiperplano que separa os dados em diferentes classes, maximizando a margem entre as 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 prontamente o problema para si.
Criar um Conjunto de Dados Separável de Duas Classes
Para criar um conjunto de dados separável de duas classes, utilizaremos a função make_blobs() do scikit-learn. Esta função gera blobs gaussianos isotrópicos para agrupamento e classificação. Criaremos 40 amostras com dois centros e uma semente aleatória de 6. Também plotaremos os pontos de dados utilizando matplotlib.
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
## criar um conjunto de dados separável de duas classes
X, y = make_blobs(n_samples=40, centers=2, random_state=6)
## plotar os pontos de dados
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
plt.show()
Ajustar o Modelo SVM
Em seguida, ajustaremos o modelo SVM aos nossos dados utilizando um kernel linear e um parâmetro de regularização de 1000. Usaremos a função svm.SVC() do scikit-learn para criar o classificador SVM.
from sklearn import svm
## ajustar o modelo SVM
clf = svm.SVC(kernel="linear", C=1000)
clf.fit(X, y)
Plotar o Hiperplano de Separação de Margem Máxima
Para plotar o hiperplano de separação de margem máxima, utilizaremos a função DecisionBoundaryDisplay.from_estimator() do scikit-learn. Esta função plota a função de decisão e os vetores de suporte do classificador SVM. Também plotaremos os vetores de suporte como círculos sem preenchimento e com borda preta.
from sklearn.inspection import DecisionBoundaryDisplay
## plotar a função de decisão e os vetores de suporte
ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
clf,
X,
plot_method="contour",
colors="k",
levels=[-1, 0, 1],
alpha=0.5,
linestyles=["--", "-", "--"],
ax=ax,
)
ax.scatter(
clf.support_vectors_[:, 0],
clf.support_vectors_[:, 1],
s=100,
linewidth=1,
facecolors="none",
edgecolors="k",
)
plt.show()
Resumo
Neste laboratório, aprendemos a criar um conjunto de dados separável de duas classes, ajustar um modelo SVM usando um kernel linear e plotar o hiperplano de separação de margem máxima usando o scikit-learn. O SVM é um poderoso algoritmo de classificação que pode ser usado para uma variedade de aplicações, incluindo classificação de imagens, classificação de texto e bioinformática.