-
Notifications
You must be signed in to change notification settings - Fork 2
/
Iris_PCA.Rmd
63 lines (51 loc) · 1.52 KB
/
Iris_PCA.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
---
title: "Principal Component Analysis"
author: "Raphael Balzer, Felix Blum"
date: "2023-04-26"
output:
prettydoc::html_pretty:
theme: architect
toc: true
df_print: paged
---
# PCA im Iris-Datensatz
## Pakete laden
```{r}
library(tidyverse)
library(tidymodels)
library(easystats)
library(datasets)
```
## Daten vorbereiten
```{r}
data(iris)
set.seed(123)
iris_split <- initial_split(iris, prop = 0.7)
iris_train <- training(iris_split)
iris_test <- testing(iris_split)
```
## Rezept erstellen
Für die PCA gibt es den Befehl step_pca. Dieser untersucht den Datensatz auf Variablen, die mehr oder weniger dasselbe aussagen und dadurch einem Model keinen weiteren Informationszuwachs bieten können. Diese werden dann in sogenannte Principle Components (PCs) zusammengefasst. mit num_comp kann man festlegen, wie viele das sein sollen. Für die PCA müssen alle Prädiktoren zunächst normalisiert werden.
```{r}
pca_recipe <- recipe(~., data = iris_train) %>%
step_normalize(all_numeric_predictors()) %>%
step_pca(all_numeric_predictors(), num_comp = 2)
```
## Rezept backen
Jetzt schauen wir uns das Ergebnis der PCA an und erstellen einen tollen Plot.
```{r}
pca_prep <- pca_recipe %>%
prep()
pca_prep %>%
bake(new_data = NULL)
```
```{r}
tidied_pca <- tidy(pca_prep, 2)
tidied_pca %>%
filter(component %in% paste0("PC", 1:5)) %>%
mutate(component = fct_inorder(component)) %>%
ggplot(aes(value, terms, fill = terms)) +
geom_col(show.legend = FALSE) +
facet_wrap(~component, nrow = 1) +
labs(y = NULL)
```