Carregamento e Exploração de Dados com Scikit-learn

scikit-learnBeginner
Pratique Agora

Introdução

Bem-vindo ao mundo do aprendizado de máquina com scikit-learn! Um dos primeiros e mais cruciais passos em qualquer projeto de aprendizado de máquina é carregar e entender seus dados. Scikit-learn, uma biblioteca poderosa e amigável para aprendizado de máquina em Python, fornece vários conjuntos de dados integrados para ajudá-lo a começar.

Neste laboratório, você trabalhará com o famoso conjunto de dados da flor de Íris. Você aprenderá como carregar este conjunto de dados, inspecionar sua estrutura, acessar os dados das características (features) e os rótulos alvo (target labels), e finalmente, criar uma visualização simples para ter um primeiro olhar sobre a distribuição dos dados. Este conhecimento fundamental é essencial para qualquer aspirante a cientista de dados ou engenheiro de aprendizado de máquina.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 87%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Carregar o conjunto de dados Iris com datasets.load_iris()

Nesta etapa, você aprenderá como carregar um dos conjuntos de dados integrados do scikit-learn. Usaremos a função load_iris() do módulo sklearn.datasets. Esta função retorna um objeto "Bunch", que é semelhante a um dicionário Python e contém o conjunto de dados juntamente com seus metadados.

Primeiro, abra o arquivo main.py no explorador de arquivos no lado esquerdo da sua tela. Escreveremos todo o nosso código neste arquivo.

Agora, adicione o seguinte código ao main.py para importar o módulo necessário e carregar o conjunto de dados.

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

Este código importa o módulo datasets e chama a função load_iris(), armazenando o objeto do conjunto de dados resultante em uma variável chamada iris.

Para executar seu script, abra um terminal no WebIDE (você pode usar o menu "Terminal" -> "New Terminal") e execute o seguinte comando. Seu diretório atual já é ~/project.

python3 main.py

Você não verá nenhuma saída, e isso é esperado. Carregamos os dados na variável iris, mas ainda não pedimos ao nosso script para imprimir nada. Nas próximas etapas, exploraremos o conteúdo deste objeto iris.

Acessar o array de dados usando iris.data

Nesta etapa, você acessará o núcleo do conjunto de dados: os dados das características (feature data). O objeto iris que criamos contém um atributo chamado data, que guarda um array NumPy das medições de cada flor. Cada linha representa uma amostra (uma flor), e cada coluna representa uma característica (uma medição).

Vamos modificar o arquivo main.py para imprimir este array de dados e ver como ele se parece.

Atualize seu arquivo main.py com o seguinte código:

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

## Print the data array
print(iris.data)

Agora, execute o script novamente a partir do seu terminal:

python3 main.py

Você deverá ver um grande array de números impresso no terminal. Estes são os dados das características para todas as 150 amostras de flores no conjunto de dados. Cada amostra possui 4 características.

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 ...
 [6.5 3.  5.2 2. ]
 [6.2 3.4 5.4 2.3]
 [5.9 3.  5.1 1.8]]

Acessar o array de destino usando iris.target

Nesta etapa, você acessará os rótulos (labels) de cada amostra no conjunto de dados. Em aprendizado de máquina supervisionado, esses rótulos são chamados de "destino" (target). O objeto iris armazena estes no atributo target. Para o conjunto de dados Iris, os destinos representam as espécies de cada flor.

As espécies são codificadas como inteiros: 0 para setosa, 1 para versicolor e 2 para virginica. O atributo iris.target é um array NumPy contendo o inteiro correspondente para cada amostra em iris.data.

Vamos modificar o main.py para imprimir o array de destino.

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

## Print the target array
print(iris.target)

Execute o script a partir do seu terminal:

python3 main.py

A saída será um array de 0s, 1s e 2s, representando a espécie de cada uma das 150 flores.

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

Explorar nomes de características com iris.feature_names

Nesta etapa, você aprenderá como descobrir o que as colunas no array iris.data realmente representam. Embora saibamos que existem quatro características, seus nomes não são imediatamente óbvios a partir do próprio array de dados. O objeto iris armazena convenientemente esses nomes no atributo feature_names.

Isso é muito útil para entender e interpretar seus dados. Vamos modificar o main.py para imprimir esses nomes de características.

Atualize seu arquivo main.py:

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

## Print the feature names
print(iris.feature_names)

Agora, execute o script a partir do seu terminal:

python3 main.py

A saída será uma lista de strings, fornecendo o nome para cada uma das quatro colunas em iris.data.

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

Agora você sabe que as quatro características correspondem ao comprimento da sépala, largura da sépala, comprimento da pétala e largura da pétala, todas em centímetros.

Visualizar dados usando matplotlib.pyplot.scatter(iris.data[:, 0], iris.data[:, 1])

Nesta etapa final, você realizará uma visualização simples dos dados para ver a relação entre duas das características. A visualização é uma parte fundamental da exploração de dados. Usaremos a biblioteca matplotlib, uma ferramenta popular de plotagem em Python, para criar um gráfico de dispersão (scatter plot).

Plotaremos a primeira característica (comprimento da sépala) contra a segunda característica (largura da sépala). Para selecionar essas colunas de nossos dados, usamos o fatiamento (slicing) do NumPy:

  • iris.data[:, 0] seleciona todas as linhas (:) e a primeira coluna (0).
  • iris.data[:, 1] seleciona todas as linhas (:) e a segunda coluna (1).

Em vez de exibir o gráfico na tela, o que não é ideal para este ambiente, salvaremos em um arquivo de imagem chamado iris_plot.png.

Atualize seu arquivo main.py com o seguinte código:

from sklearn import datasets
import matplotlib.pyplot as plt

## Load the Iris dataset
iris = datasets.load_iris()

## We will plot the first two features: Sepal Length vs Sepal Width
X = iris.data[:, :2]
y = iris.target

plt.scatter(X[:, 0], X[:, 1])
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')
plt.title('Sepal Length vs Sepal Width')

## Save the plot to a file
plt.savefig('iris_plot.png')

print("Plot saved to iris_plot.png")

Execute o script a partir do seu terminal:

python3 main.py

Você verá uma mensagem de confirmação.

Plot saved to iris_plot.png
Iris dataset scatter plot

Este comando não exibirá um gráfico diretamente, mas criará um novo arquivo chamado iris_plot.png no seu diretório ~/project. Você pode clicar duas vezes neste arquivo no explorador de arquivos à esquerda para visualizar seu gráfico de dispersão.

Resumo

Parabéns por completar este laboratório! Você deu seus primeiros passos com sucesso no manuseio de dados com scikit-learn.

Neste laboratório, você aprendeu a:

  • Carregar um conjunto de dados integrado usando sklearn.datasets.load_iris().
  • Acessar a matriz de características usando o atributo .data.
  • Acessar os rótulos de destino usando o atributo .target.
  • Entender o significado das características inspecionando o atributo .feature_names.
  • Realizar uma visualização básica de dados criando um gráfico de dispersão com matplotlib e salvando-o em um arquivo.

Essas habilidades fundamentais são os blocos de construção para tarefas de aprendizado de máquina mais avançadas. Agora você está preparado para explorar outros conjuntos de dados e começar a construir seus próprios modelos de aprendizado de máquina.