Reducerea dimensiunii | R-bloggeri

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe r.iresmi.netși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

O fotografie a unui dodecaedru în amurg, ajurata și luminată din interior

Floura – Înflorire ușoară – Arta lui Hybycozo – Grădina botanică în deșert – CC-BY-NC de Alan English CPA

Ziua 6 din 30DayMapChallenge: «Dimensiuni» (anterior).

Conform Wikipedia, Uniform manifold aproximation and projection (UMAP) este o tehnică neliniară de reducere a dimensionalității. Ne va permite să proiectăm multe dimensiuni (ei bine, doar 3 în acest exemplu) pe un plan 2D.

library(sf)
library(umap)
library(dplyr)
library(tidyr)
library(ggplot2)
library(ggrepel)
library(glue)

options(scipen = 100)

Date

Vom folosi comunele franceze (obțineți datele din această postare).

com <- read_sf("~/data/adminexpress/adminexpress_cog_simpl_000_2022.gpkg",
               layer = "commune") |>
  st_centroid() |>
  mutate(x = st_coordinates(geom)(, 1),
         y = st_coordinates(geom)(, 2))

UMAP

Dimensiunile luate in calcul sunt: ​​locatie (x, y) și population. Aceste variabile ar trebui scalate, dar rezultatul este mai frumos fără scalare…

umaps_params <- umap.defaults
umaps_params$random_state <- 20251106

com_umap <- com |>
  st_drop_geometry() |>
  select(x, y, population) |>
  # scale() |> 
  umap(config = umaps_params)

res <- com_umap$layout |>
  as_tibble(.name_repair = "universal") |>
  bind_cols(com) |>
  rename(UMAP1 = 1,
         UMAP2 = 2)

Hartă

res |>
  ggplot(aes(UMAP1, UMAP2, color = population)) +
  geom_point() +
  geom_text_repel(data = filter(res, 
                                statut %in% c("Préfecture", 
                                              "Préfecture de région",
                                              "Capitale d'état")),
                  aes(label = nom),
                  size = 3, force = .5, force_pull = 0.5, max.overlaps = 1e6,
                  bg.colour = "#ffffffaa", bg.r = .2, alpha = .6) +
  scale_color_viridis_c(trans = "log1p", option = "H",
                        breaks = c(1000, 50000, 500000, 2000000)) +
  coord_equal() +
  labs(title = "Uniform manifold approximation and projection of french communes",
       subtitle = "by location and population",
       caption = glue("https://r.iresmi.net/ - {Sys.Date()}
                      data from IGN Adminexpress 2022")) +
  theme_minimal() +
  theme(plot.caption = element_text(size = 6, 
                                    color = "darkgrey"))
Trasează pe un plan 2D în care fiecare punct este un oraș francez. Modelele sunt ca un foc de artificiiTrasează pe un plan 2D în care fiecare punct este un oraș francez. Modelele sunt ca un foc de artificii

Figura 1: O reprezentare UMAP a francezilor comunele

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.