1. Manipulação de Dados

Carregamento do Dataset

Nesta seção, vamos carregar o dataset Iris e realizar diversas manipulações de dados.

# Carregando o dataset
iris_data <- read.csv("Iris.csv")

# Visualizando as primeiras linhas
head(iris_data)
##   Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm     Species
## 1  1           5.1          3.5           1.4          0.2 Iris-setosa
## 2  2           4.9          3.0           1.4          0.2 Iris-setosa
## 3  3           4.7          3.2           1.3          0.2 Iris-setosa
## 4  4           4.6          3.1           1.5          0.2 Iris-setosa
## 5  5           5.0          3.6           1.4          0.2 Iris-setosa
## 6  6           5.4          3.9           1.7          0.4 Iris-setosa

Estrutura dos Dados

# Verificando a estrutura do dataset
str(iris_data)
## 'data.frame':    150 obs. of  6 variables:
##  $ Id           : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ SepalLengthCm: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ SepalWidthCm : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ PetalLengthCm: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ PetalWidthCm : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species      : chr  "Iris-setosa" "Iris-setosa" "Iris-setosa" "Iris-setosa" ...
# Resumo estatístico
summary(iris_data)
##        Id         SepalLengthCm    SepalWidthCm   PetalLengthCm  
##  Min.   :  1.00   Min.   :4.300   Min.   :2.000   Min.   :1.000  
##  1st Qu.: 38.25   1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600  
##  Median : 75.50   Median :5.800   Median :3.000   Median :4.350  
##  Mean   : 75.50   Mean   :5.843   Mean   :3.054   Mean   :3.759  
##  3rd Qu.:112.75   3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100  
##  Max.   :150.00   Max.   :7.900   Max.   :4.400   Max.   :6.900  
##   PetalWidthCm     Species         
##  Min.   :0.100   Length:150        
##  1st Qu.:0.300   Class :character  
##  Median :1.300   Mode  :character  
##  Mean   :1.199                     
##  3rd Qu.:1.800                     
##  Max.   :2.500

Interpretação: O dataset Iris contém 150 observações e 6 variáveis. As variáveis numéricas representam medidas de sépalas e pétalas em centímetros, enquanto a variável Species indica a espécie da flor.

Manipulações Realizadas

1. Filtragem de Dados

Vamos filtrar apenas as flores da espécie Setosa com comprimento de sépala maior que 5 cm:

# Filtrando Setosa com SepalLengthCm > 5
iris_filtrado <- iris_data %>%
  filter(Species == "Iris-setosa", SepalLengthCm > 5)

cat("Número de registros filtrados:", nrow(iris_filtrado))
## Número de registros filtrados: 22
head(iris_filtrado)
##   Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm     Species
## 1  1           5.1          3.5           1.4          0.2 Iris-setosa
## 2  6           5.4          3.9           1.7          0.4 Iris-setosa
## 3 11           5.4          3.7           1.5          0.2 Iris-setosa
## 4 15           5.8          4.0           1.2          0.2 Iris-setosa
## 5 16           5.7          4.4           1.5          0.4 Iris-setosa
## 6 17           5.4          3.9           1.3          0.4 Iris-setosa

Resultado: Foram encontrados 22 registros que atendem aos critérios de filtragem.

2. Ordenação de Dados

Ordenando o dataset pelo comprimento da pétala em ordem decrescente:

# Ordenando por PetalLengthCm (decrescente)
iris_ordenado <- iris_data %>%
  arrange(desc(PetalLengthCm))

head(iris_ordenado, 10)
##     Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm        Species
## 1  119           7.7          2.6           6.9          2.3 Iris-virginica
## 2  118           7.7          3.8           6.7          2.2 Iris-virginica
## 3  123           7.7          2.8           6.7          2.0 Iris-virginica
## 4  106           7.6          3.0           6.6          2.1 Iris-virginica
## 5  132           7.9          3.8           6.4          2.0 Iris-virginica
## 6  108           7.3          2.9           6.3          1.8 Iris-virginica
## 7  110           7.2          3.6           6.1          2.5 Iris-virginica
## 8  131           7.4          2.8           6.1          1.9 Iris-virginica
## 9  136           7.7          3.0           6.1          2.3 Iris-virginica
## 10 101           6.3          3.3           6.0          2.5 Iris-virginica

Resultado: As 10 flores com maiores comprimentos de pétala foram identificadas, com valores variando de 6.9 a 6 cm.

3. Criação de Novas Variáveis

Vamos criar variáveis derivadas para análise adicional:

# Criando novas variáveis
iris_transformado <- iris_data %>%
  mutate(
    # Área da sépala (aproximação retangular)
    SepalArea = SepalLengthCm * SepalWidthCm,
    
    # Área da pétala (aproximação retangular)
    PetalArea = PetalLengthCm * PetalWidthCm,
    
    # Razão entre comprimento e largura da pétala
    PetalRatio = PetalLengthCm / PetalWidthCm,
    
    # Classificação do tamanho da flor
    TamanhoFlor = case_when(
      PetalLengthCm < 2 ~ "Pequena",
      PetalLengthCm >= 2 & PetalLengthCm < 5 ~ "Média",
      PetalLengthCm >= 5 ~ "Grande"
    )
  )

head(iris_transformado)
##   Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm     Species
## 1  1           5.1          3.5           1.4          0.2 Iris-setosa
## 2  2           4.9          3.0           1.4          0.2 Iris-setosa
## 3  3           4.7          3.2           1.3          0.2 Iris-setosa
## 4  4           4.6          3.1           1.5          0.2 Iris-setosa
## 5  5           5.0          3.6           1.4          0.2 Iris-setosa
## 6  6           5.4          3.9           1.7          0.4 Iris-setosa
##   SepalArea PetalArea PetalRatio TamanhoFlor
## 1     17.85      0.28       7.00     Pequena
## 2     14.70      0.28       7.00     Pequena
## 3     15.04      0.26       6.50     Pequena
## 4     14.26      0.30       7.50     Pequena
## 5     18.00      0.28       7.00     Pequena
## 6     21.06      0.68       4.25     Pequena

Interpretação das novas variáveis:

  • SepalArea: Estimativa da área da sépala em cm²
  • PetalArea: Estimativa da área da pétala em cm²
  • PetalRatio: Razão de aspecto da pétala (comprimento/largura)
  • TamanhoFlor: Classificação categórica baseada no comprimento da pétala

4. Agregação por Espécie

Calculando estatísticas descritivas por espécie:

# Estatísticas por espécie
stats_especies <- iris_transformado %>%
  group_by(Species) %>%
  summarise(
    N = n(),
    Media_SepalLength = round(mean(SepalLengthCm), 2),
    Media_PetalLength = round(mean(PetalLengthCm), 2),
    Media_PetalArea = round(mean(PetalArea), 2),
    Max_PetalRatio = round(max(PetalRatio), 2),
    Min_PetalRatio = round(min(PetalRatio), 2)
  )

kable(stats_especies, 
      caption = "Estatísticas Descritivas por Espécie",
      col.names = c("Espécie", "N", "Média Sépala (cm)", 
                    "Média Pétala (cm)", "Média Área Pétala (cm²)",
                    "Razão Máx", "Razão Mín"))
Estatísticas Descritivas por Espécie
Espécie N Média Sépala (cm) Média Pétala (cm) Média Área Pétala (cm²) Razão Máx Razão Mín
Iris-setosa 50 5.01 1.46 0.36 15.0 2.67
Iris-versicolor 50 5.94 4.26 5.72 4.1 2.67
Iris-virginica 50 6.59 5.55 11.30 4.0 2.12

Análise: Observa-se diferenças significativas entre as espécies. A Iris-setosa apresenta pétalas menores, enquanto a Iris-virginica possui as maiores dimensões médias.

5. Visualização dos Dados Manipulados

# Gráfico de dispersão com as novas variáveis
ggplot(iris_transformado, aes(x = PetalArea, y = SepalArea, color = Species)) +
  geom_point(size = 3, alpha = 0.7) +
  labs(title = "Relação entre Área da Pétala e Área da Sépala",
       x = "Área da Pétala (cm²)",
       y = "Área da Sépala (cm²)",
       color = "Espécie") +
  theme_minimal() +
  theme(legend.position = "bottom")

Conclusão da Manipulação: As manipulações realizadas permitiram filtrar, ordenar, criar novas variáveis e agregar os dados, facilitando análises mais profundas sobre as características das flores Iris.


2. Tabela Interativa

Esta tabela interativa permite buscar, ordenar e paginar os dados do dataset Iris transformado. Utilize as funcionalidades de busca e ordenação para explorar os dados.

# Criando tabela interativa com DT
datatable(
  iris_transformado,
  caption = 'Dataset Iris - Tabela Interativa',
  filter = 'top',
  options = list(
    pageLength = 10,
    scrollX = TRUE,
    language = list(
      search = 'Buscar:',
      lengthMenu = 'Mostrar _MENU_ registros',
      info = 'Mostrando _START_ a _END_ de _TOTAL_ registros'
    )
  ),
  rownames = FALSE
) %>%
  formatRound(columns = c('SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 
                          'PetalWidthCm', 'SepalArea', 'PetalArea', 'PetalRatio'), 
              digits = 2)

Funcionalidades da Tabela:

  • Busca: Campo de busca global no canto superior direito
  • Ordenação: Clique nos cabeçalhos das colunas para ordenar
  • Paginação: Navegue entre as páginas usando os controles na parte inferior
  • Filtros: Utilize os filtros no topo de cada coluna para refinar a visualização
  • Exportação: Botões para copiar, exportar para CSV, Excel ou PDF

3. Equações Matemáticas

Apresentação de cinco equações complexas relevantes para análise de dados e machine learning.

Equação 1: Regressão Linear Múltipla

\[ Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_nX_n + \epsilon \]

Significado: Esta equação representa o modelo de regressão linear múltipla, onde \(Y\) é a variável dependente, \(X_1, X_2, \ldots, X_n\) são as variáveis independentes (preditoras), \(\beta_0\) é o intercepto, \(\beta_1, \ldots, \beta_n\) são os coeficientes de regressão, e \(\epsilon\) é o termo de erro. É fundamental para modelagem preditiva em ciência de dados.

Equação 2: Função de Verossimilhança

\[ \mathcal{L}(\theta | X) = \prod_{i=1}^{n} f(x_i | \theta) = f(x_1 | \theta) \times f(x_2 | \theta) \times \cdots \times f(x_n | \theta) \]

Significado: A função de verossimilhança mede quão provável é observar os dados \(X\) dado um conjunto de parâmetros \(\theta\). É utilizada em estimação de parâmetros e inferência estatística, sendo essencial para métodos como Maximum Likelihood Estimation (MLE).

Equação 3: Entropia de Shannon

\[ H(X) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i) \]

Significado: A entropia mede a incerteza ou quantidade de informação em uma variável aleatória \(X\). Quanto maior a entropia, maior a incerteza. Esta equação é fundamental em teoria da informação e é utilizada em algoritmos de árvores de decisão para calcular o ganho de informação.

Equação 4: Backpropagation em Redes Neurais

\[ \frac{\partial \mathcal{L}}{\partial w_{ij}} = \frac{\partial \mathcal{L}}{\partial a_j} \cdot \frac{\partial a_j}{\partial z_j} \cdot \frac{\partial z_j}{\partial w_{ij}} = \delta_j \cdot a_i \]

Significado: Esta equação representa o cálculo do gradiente da função de perda \(\mathcal{L}\) em relação aos pesos \(w_{ij}\) em uma rede neural. O algoritmo de backpropagation utiliza a regra da cadeia para propagar o erro da camada de saída para as camadas anteriores, permitindo o treinamento eficiente de redes neurais profundas.

Equação 5: Teorema de Bayes

\[ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} = \frac{P(B|A) \cdot P(A)}{\sum_{i} P(B|A_i) \cdot P(A_i)} \]

Significado: O Teorema de Bayes descreve a probabilidade de um evento \(A\) ocorrer dado que outro evento \(B\) ocorreu. É fundamental em inferência bayesiana e classificadores probabilísticos como o Naive Bayes. \(P(A|B)\) é a probabilidade posterior, \(P(B|A)\) é a verossimilhança, \(P(A)\) é a probabilidade prior, e \(P(B)\) é a evidência.


4. Figuras em Ciência de Dados

Nesta seção apresentamos duas figuras relevantes que ilustram conceitos fundamentais de Machine Learning e Ciência de Dados.

Figura 1: Dendrograma - Cluster Hierárquico Aglomerativo

Dendrograma de Clustering Hierárquico
Dendrograma de Clustering Hierárquico

Descrição: O dendrograma é uma representação visual de clustering hierárquico aglomerativo, técnica de aprendizado não-supervisionado que agrupa dados similares de forma hierárquica.

Figura 2: Tipos de Aprendizado em Inteligência Artificial

Tipos de Aprendizado em Machine Learning
Tipos de Aprendizado em Machine Learning

Descrição: Esta figura ilustra os principais paradigmas de aprendizado em Machine Learning: Supervisionado, Não-Supervisionado e por Reforço.


5. Referências Bibliográficas

James et al. (2013)

WICKHAM (2023)

Chambers (2020)

Boehmke and Greenwell (2019)

Abedin and Das (2015)

Abedin, Jaynal, and Kishor Kumar Das. 2015. Data Manipulation with r. Packt Publishing.
Boehmke, Brad, and Brandon M Greenwell. 2019. Hands-on Machine Learning with r. Chapman; Hall/CRC.
Chambers, John M. 2020. “S, r, and Data Science.” Proceedings of the ACM on Programming Languages 4 (HOPL): 1–17.
James, Gareth, Daniela Witten, Trevor Hastie, and Robert Tibshirani. 2013. An Introduction to Statistical Learning: With Applications in r. Vol. 103. Springer.
WICKHAM, HADLEY. 2023. R for Data Science: Import, Tidy, Transform, Visualize, and Model Data. O’Reilly Media.