Classificador SVM no Conjunto de Dados Iris

Beginner

This tutorial is from open-source community. Access the source code

Introdução

O conjunto de dados iris é um conjunto de dados clássico utilizado para problemas de classificação. Neste laboratório, aprenderemos a traçar diferentes classificadores SVM no conjunto de dados iris utilizando a biblioteca Python scikit-learn. Vamos comparar diferentes classificadores SVM lineares numa projeção 2D do conjunto de dados iris.

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 necessárias e carregar o conjunto de dados

import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay

## importar alguns dados para trabalhar
iris = datasets.load_iris()
## Tomar as duas primeiras características. Poderíamos evitar isto usando um conjunto de dados bidimensional
X = iris.data[:, :2]
y = iris.target

Criar classificadores SVM e ajustar os dados

C = 1.0  ## Parâmetro de regularização SVM
models = (
    svm.SVC(kernel="linear", C=C),
    svm.LinearSVC(C=C, max_iter=10000, dual="auto"),
    svm.SVC(kernel="rbf", gamma=0.7, C=C),
    svm.SVC(kernel="poly", degree=3, gamma="auto", C=C),
)
models = (clf.fit(X, y) for clf in models)

Representar a superfície de decisão para os classificadores

## Configurar uma grelha 2x2 para a representação gráfica.
fig, sub = plt.subplots(2, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)

X0, X1 = X[:, 0], X[:, 1]

## criar um DecisionBoundaryDisplay para cada classificador
for clf, title, ax in zip(models, titles, sub.flatten()):
    disp = DecisionBoundaryDisplay.from_estimator(
        clf,
        X,
        response_method="predict",
        cmap=plt.cm.coolwarm,
        alpha=0.8,
        ax=ax,
        xlabel=iris.feature_names[0],
        ylabel=iris.feature_names[1],
    )
    ## representar os pontos de dados
    ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
    ax.set_xticks(())
    ax.set_yticks(())
    ax.set_title(title)

plt.show()

Interpretar os resultados

O código acima gerará um gráfico com quatro subgráficos. Cada subgráfico mostra a superfície de decisão para um classificador SVM diferente. O título de cada subgráfico indica o tipo de kernel SVM usado nesse classificador. Os pontos de dados são codificados por cores com base na sua classe alvo.

Sumário

Neste laboratório, aprendemos a representar graficamente diferentes classificadores SVM no conjunto de dados iris utilizando a biblioteca Python scikit-learn. Comparámos diferentes classificadores lineares SVM numa projeção 2D do conjunto de dados iris e interpretamos os resultados. Os classificadores SVM são ferramentas poderosas para problemas de classificação e podem ser utilizados para uma vasta gama de conjuntos de dados.