(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.

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"))

Figura 1: O reprezentare UMAP a francezilor comunele
