---
title: "wisc_bc_data - kNN"
author: "Prof. Eric A. Suess"
date: "2/26/2025"
format: 
  html:
    embed-resources: true
---


```{r}
library(tidyverse)
library(tidymodels)
library(GGally)
```

```{r}
wbcd <- read_csv("wisc_bc_data.csv")
wbcd <- wbcd |> select(-id) |> 
  mutate(diagnosis = as_factor(diagnosis))
wbcd
```

```{r}
wbcd_split <- initial_split(wbcd, prop = 0.8)
wbcd_split

wbcd_train <- training(wbcd_split)
head(wbcd_train)

wbcd_test <- testing(wbcd_split)
head(wbcd_test)
```

```{r, message = FALSE}
wbcd |> select(diagnosis, ends_with("mean")) |>   
  ggpairs(aes(color = diagnosis))
```

```{r}
wbcd_rec <-
  recipe(diagnosis ~ ., data = wbcd_train) |>
  step_normalize(all_predictors()) 
summary(wbcd_rec)
```

```{r}
knn_model <-
  nearest_neighbor(
    mode = "classification"
  ) |>
  set_engine("kknn")

wbcd_wflow <-
  workflow() |>
  add_recipe(wbcd_rec) |>
  add_model(knn_model)

knn_fit <- wbcd_wflow |>
  # fit the final best model to the training set and evaluate the test set
  last_fit(wbcd_split)

knn_predictions <- knn_fit |>
  collect_predictions()

knn_performance <- knn_fit |>
  collect_metrics()

knn_predictions |>
  conf_mat(truth = diagnosis, estimate = .pred_class)
```

```{r}
knn_predictions <- knn_fit |>
  collect_metrics()
knn_predictions
```

