Introdução
Neste laboratório, exploraremos o conjunto de dados de dígitos do scikit-learn. Este conjunto de dados consiste em 1797 imagens de 8x8 pixels, cada uma representando um dígito manuscrito de 0 a 9. Nosso objetivo é analisar este conjunto de dados e compreender como podemos utilizá-lo para classificar dígitos manuscritos usando algoritmos de machine learning.
Dicas da Máquina Virtual
Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.
Às vezes, pode ser necessário esperar alguns segundos para que o Jupyter Notebook termine 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, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para si.
Importando o Conjunto de Dados
O primeiro passo é importar o conjunto de dados de dígitos do scikit-learn usando o seguinte código:
from sklearn import datasets
## Carregar o conjunto de dados de dígitos
digits = datasets.load_digits()
Visualizando o Conjunto de Dados
Para uma melhor compreensão do conjunto de dados, podemos visualizar uma imagem de amostra usando matplotlib. O código a seguir exibe o último dígito do conjunto de dados:
import matplotlib.pyplot as plt
## Exibir o último dígito
plt.figure(1, figsize=(3, 3))
plt.imshow(digits.images[-1], cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()
Preparando o Conjunto de Dados para Aprendizado de Máquina
Antes de treinar um modelo de aprendizado de máquina no conjunto de dados, precisamos prepará-lo dividindo-o em conjuntos de treinamento e teste. Podemos fazer isso usando a função train_test_split do scikit-learn:
from sklearn.model_selection import train_test_split
## Dividir o conjunto de dados em conjuntos de treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)
Treinando um Modelo de Aprendizado de Máquina
Agora que o conjunto de dados foi preparado, podemos treinar um modelo de aprendizado de máquina nos dados de treinamento. Neste exemplo, usaremos um algoritmo de Máquina de Vetores de Suporte (SVM):
from sklearn.svm import SVC
## Criar o classificador SVM
clf = SVC(kernel='linear')
## Treinar o classificador nos dados de treinamento
clf.fit(X_train, y_train)
Avaliando o Modelo
Para avaliar o desempenho do nosso modelo, podemos usar a função accuracy_score do scikit-learn:
from sklearn.metrics import accuracy_score
## Predizer as etiquetas do conjunto de teste
y_pred = clf.predict(X_test)
## Calcular a precisão do modelo
accuracy = accuracy_score(y_test, y_pred)
## Imprimir a precisão do modelo
print("Precisão:", accuracy)
Melhorando o Modelo
Se a precisão do nosso modelo não for satisfatória, podemos tentar melhorá-lo ajustando os hiperparâmetros do algoritmo SVM. Por exemplo, podemos tentar alterar o valor do parâmetro C:
## Criar o classificador SVM com um valor diferente de C
clf = SVC(kernel='linear', C=0.1)
## Treinar o classificador nos dados de treinamento
clf.fit(X_train, y_train)
## Predizer as etiquetas do conjunto de teste
y_pred = clf.predict(X_test)
## Calcular a precisão do modelo
accuracy = accuracy_score(y_test, y_pred)
## Imprimir a precisão do modelo
print("Precisão:", accuracy)
Resumo
Neste laboratório, exploramos o conjunto de dados de dígitos do scikit-learn e aprendemos como treinar um modelo de aprendizado de máquina para classificar dígitos manuscritos. Também aprendemos como avaliar o desempenho do modelo e como melhorá-lo ajustando os hiperparâmetros do algoritmo. Este conjunto de dados é um ótimo recurso para quem está interessado em aprender sobre algoritmos de classificação de aprendizado de máquina.