Search
Close this search box.
Machine learning com Python: EDA com o conjunto de dados Iris
Machine learning com Python: EDA

Posts Relacionados:

Domine a análise exploratória de dados (EDA) em Python com o conjunto de dados de Iris, uma ferramenta fundamental para iniciantes em machine learning.

Receba nossa newsletter

Análise Exploratória de Dados (EDA)

A Análise Exploratória de Dados (Exploratory Data Analysis, EDA) em machine learning envolve um exame minucioso dos dados por meio de visualizações e técnicas estatísticas. Usando bibliotecas Python como Pandas, Seaborn e Matplotlib, a EDA inclui a criação de histogramas, boxplots e gráficos de dispersão para entender distribuições e relações entre as variáveis dos dados. Para ilustrar como implementar EDA, usaremos como exemplo o conjunto de dados Iris, um clássico em machine learning.

Conjunto de dados Iris em Machine Learning

O conjunto de dados Iris serve como uma referência padrão para testar e comparar o desempenho de vários algoritmos de classificação. Ele contém 150 pontos de dados, cada um representando uma flor de Iris. O conjunto de dados rotula esses 150 exemplos de Iris em três espécies distintas: Iris setosa, Iris versicolor e Iris virginica. As três classes de Iris (setosa, versicolor, virginica) apresentam um desafio de classificação adequado. Os dados são separáveis, mas não perfeitamente distintos, permitindo a exploração de vários algoritmos de classificação para avaliações de desempenho. Cada ponto de dados do conjunto tem quatro recursos numéricos: comprimento das sépalas, largura das sépalas, comprimento das pétalas e largura das pétalas (todos em centímetros).

A estrutura clara e os recursos bem definidos do conjunto de dados Iris facilitam a compreensão dos conceitos de manipulação de dados e algoritmos de machine learning para iniciantes na área. Para desenvolvedores avançados, esse conjunto é muito utilizado para avaliar a precisão e desempenho de um algoritmo. Para esse post, apresentaremos o conjunto de dados Iris realizando a EDA, uma etapa essencial para o treinamento de modelos de machine learning.

EDA com o Conjunto de Dados Iris

A EDA é uma primeira etapa crítica em machine learning e costuma envolver estatística descritiva e técnicas de visualização de dados. Ela atua como uma ferramenta de diagnóstico inicial. Através dela, entendemos as características dos dados e identificamos possíveis problemas como valores ausentes e outliers. A EDA também auxilia na identificação de padrões ocultos e relacionamentos entre recursos. Esse conhecimento orienta a seleção e a engenharia de recursos para preparar os dados para serem usados em um modelo. Para realizar EDA no conjunto de dados Iris, usaremos bibliotecas tradicionais de ciência de dados e visualização:

  • Pandas
  • Matplotlib
  • Seaborn

Em código, importe os pacotes necessários:

				
					import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

				
			

Como o dataset Iris é muito comum em machine learning, várias bibliotecas da área fornecem acesso direto a ele. Usaremos o conjunto de dados Iris do Seaborn:

				
					
# carrega conjunto de dados
df = sns.load_dataset('iris')

				
			

Análise Exploratória Inicial

O primeiro passo de qualquer análise consiste em olhar os dados. Isso pode ser feito com os comandos head() e tail() que mostram as primeiras e últimas linhas dos dados, respectivamente.

				
					# imprime linhas iniciais
print(df.head())

# Resultados
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa
# 1           4.9          3.0           1.4          0.2  setosa
# 2           4.7          3.2           1.3          0.2  setosa
# 3           4.6          3.1           1.5          0.2  setosa
# 4           5.0          3.6           1.4          0.2  setosa
				
			
				
					# imprime linhas finais
print(df.tail())

# Resultados
#      sepal_length  sepal_width  petal_length  petal_width    species
# 145           6.7          3.0           5.2          2.3  virginica
# 146           6.3          2.5           5.0          1.9  virginica
# 147           6.5          3.0           5.2          2.0  virginica
# 148           6.2          3.4           5.4          2.3  virginica
# 149           5.9          3.0           5.1          1.8  virginica

				
			

Para o conjunto de dados Iris, esses comandos mostram alguns exemplos dos quatro atributos numéricos do conjunto com seus respectivos rótulos.

Tipos de dados, dados ausentes e estatística descritiva básica

A função info() ajuda a entender os tipos de dados e possíveis valores ausentes:

				
					print(df.info())

# Resultados
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 150 entries, 0 to 149
# Data columns (total 5 columns):
#  #   Column        Non-Null Count  Dtype  
# ---  ------        --------------  -----  
#  0   sepal_length  150 non-null    float64
#  1   sepal_width   150 non-null    float64
#  2   petal_length  150 non-null    float64
#  3   petal_width   150 non-null    float64
#  4   species       150 non-null    object 
# dtypes: float64(4), object(1)
# memory usage: 6.0+ KB
# None
				
			

O dataset Iris não possui dados ausentes, seus atributos são dados do tipo float e os rótulos são do tipo object. O total de valores ausentes também podem ser verificados com a função isnull() do Pandas em combinação com a função sum().

				
					# verifica valores ausentes
print(df.isnull().sum())

# resultados
# sepal_length    0
# sepal_width     0
# petal_length    0
# petal_width     0
# species         0
				
			

Como é possível observar, não existem valores ausentes no conjunto de dados Iris.

A função describe() retorna um resumo estatístico para os recursos numéricos dos dados, como médias e desvios. Esses valores já dão pistas sobre a possível presença de outliers.

				
					# cria um resumo  estatístico
print(df.describe())

# Resultados
#        sepal_length  sepal_width  petal_length  petal_width
# count    150.000000   150.000000    150.000000   150.000000
# mean       5.843333     3.057333      3.758000     1.199333
# std        0.828066     0.435866      1.765298     0.762238
# min        4.300000     2.000000      1.000000     0.100000
# 25%        5.100000     2.800000      1.600000     0.300000
# 50%        5.800000     3.000000      4.350000     1.300000
# 75%        6.400000     3.300000      5.100000     1.800000
# max        7.900000     4.400000      6.900000     2.500000
				
			

A função describe() pode destacar valores extremos (min e max) que podem ser outliers. Grandes diferenças entre esses valores e o restante dos dados podem justificar uma investigação mais aprofundada com técnicas de visualização.

Distribuição das variáveis-alvo

A função value_counts() deve ser usada para analisar a distribuição das variáveis-alvo (espécies de Iris).

				
					# analisa a distribuição das variáveis-alvo
print(df['species'].value_counts())

# resultados:
# setosa        50
# versicolor    50
# virginica     50
# Name: count, dtype: int64
				
			

O conjunto de dados Iris possui exatamente 50 pontos de dados para cada classe.

Técnicas de Visualização de Dados

EDA usa várias técnicas de visualização de dados para analisar suas distribuições, presenças de outliers e relações entre atributos.

Pairplots

Pairplots são matrizes de gráficos de dispersão. Cada elemento de uma matriz pairplot mostra a relação entre duas variáveis, com pontos de dados coloridos com base nas espécies de Iris. Essa representação visual permite uma fácil observação de como as variáveis se correlacionam entre si e com as variáveis-alvo, fornecendo insights valiosos para análise e modelagem de dados. Veja como eles podem ser plotados facilmente com Seaborn:

				
					# Pairplot
sns.pairplot(df, hue='species')
plt.show()
				
			
Pairplot Iris

Pairplots do conjunto de dados Iris

Gráficos de distribuição: Histogramas e KDEs

Criar gráficos de distribuição é uma etapa vital no processo de análise exploratória de dados em Python. Gráficos como histogramas e KDEs fornecem uma representação visual da distribuição das variáveis numéricas de um conjunto de dados, como o comprimento das sépalas, largura das sépalas, comprimento das pétalas e largura das pétalas. As representações visuais ajudam a entender a distribuição de frequência dessas medições no conjunto de dados do Iris. Python oferece ferramentas eficientes para este fim, notavelmente Matplotlib e Seaborn. Essas bibliotecas permitem a geração fácil de histogramas e KDEs, oferecendo insights sobre a forma, a dispersão e a tendência central dos dados. O código Python para criar histogramas para os atributos do conjunto Iris é mostrado abaixo.

				
					# Histograma dos atributos
df.hist(figsize=(10,6))
plt.show()
				
			
Histogramas Iris

Histogramas do conjunto de dados Iris

Os KDEs podem ser gerados assim:

				
					# KDE plot
features = list(df.select_dtypes(include=['float']).columns) # isola os atributos pelo tipo de dados
# faz um for loop para plotar o KDE para cada atributo
fig, ax = plt.subplots(len(features), 1, figsize=(4, 6))
for i in range(len(features)):
    sns.kdeplot(ax=ax[i], x=features[i], data=df, fill = True)
fig.tight_layout(pad=1)
plt.show()

				
			
KDEs Iris

KDEs do conjunto de dados Iris

Gráficos Boxplots

Gráficos do tipo boxplot também podem ser usados durante a EDA. Esses gráficos permitem a identificação visual de outliers, pois eles aparecem como pontos fora dos bigodes do plot. Lidar com esses outliers adequadamente, seja removendo-os ou ajustando-os, garante uma análise mais precisa e confiável. Veja como plotar boxplots com Python:

				
					#Box Plot
features = list(df.select_dtypes(include=['float']).columns) # isola os atributos pelo tipo de dados
fig, ax = plt.subplots(len(features), 1, figsize=(4, 6))
for i in range(len(features)):
    sns.boxplot(ax=ax[i], x=features[i], data=df)
fig.tight_layout(pad=1)
plt.show()
				
			

Boxplots do conjunto de dados Iris

Os boxplots mostram a presença de outliers para o atributo com o comprimento das pétalas (petal_length).

Heatmap

A verificação de correlações em um conjunto de dados é um componente crítico da EDA em Python. Ela ajuda a entender as relações entre diferentes atributos numéricos (comprimento das sépalas, largura das sépalas, comprimento das pétalas e largura das pétalas). Identificar essas relações é essencial para a seleção de recursos para modelagem preditiva. Em Python, as bibliotecas Pandas e Seaborn são comumente usadas para calcular e visualizar correlações. O método do Pandas corr() calcula rapidamente a correlação par a par de colunas, enquanto o heatmap do Seaborn fornece uma representação visual dessas correlações.

				
					# Heatmap para entender as relações entre diferentes recursos numéricos
correlation_matrix = df.select_dtypes(exclude=['object']).corr() # exclui variáveis-alvo
sns.heatmap(correlation_matrix, cmap = 'RdYlBu', annot=True, fmt=".2f", square=True, linewidths=.5)
plt.show()
				
			
heatmap Iris

Heatmap do conjunto de dados Iris

Conclusões

Neste post, apresentamos as etapas padrões para executar efetivamente a EDA no conjunto de dados Iris. Essas etapas permitem entender a distribuição de dados, identificar possíveis relações entre os recursos e as variáveis-alvo e obter insights antes de aplicar algoritmos de machine learning. Para um problema mais complexo, visualizações adicionais e análises mais aprofundadas de relacionamentos podem ser necessárias.

Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.

Imagem com IA Generativa – Dia 102

IA generativa img102

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial