Довольно быстро отыскалась причина странного поведения алгоритма UMAP в разных средах, о которой я писал ранее. Всё оказалось очень просто, но в довольно неожиданном месте: версия не только библиотеки umap, но и самой среды выполнения R. Таким образом, для идентичной работы алгоритма на разных платформах, требуется не только одинаковая версия используемой библиотеки, но и самой среды.
Итак, наш код с данными по ирисам:
library(umap)
library(dbscan)
iris.data <- iris[,-5]
iris.norm <- scale(iris.data)
#set.seed(15)
iris.umap <- umap(as.matrix(iris.data) , random_state = 15)
iris.clus <- dbscan(iris.umap$layout, eps = 0.7, minPts = 5)
spec <- ifelse(iris$Species == 'setosa', 1,
ifelse(iris$Species == 'versicolor', 2,
ifelse(iris$Species == 'virginica', 3, -20)))
plot(iris.umap$layout, bg=iris.clus$cluster + 1L, pch=20 + spec , xlab = 'X', lab = 'Y', cex=2)
Результаты выполнения этого кода на трёх разных машинах, две из которых имеют одинаковую ОС:
Ubuntu Linux 16 (home)
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 3
minor 6.3
year 2020
month 02
day 29
svn rev 77875
language R
version.string R version 3.6.3 (2020-02-29)
nickname Holding the Windsock
umap 0.2.5.0
Ubuntu Linux 16 (work)
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 3
minor 6.3
year 2020
month 02
day 29
svn rev 77875
language R
version.string R version 3.6.3 (2020-02-29)
nickname Holding the Windsock
umap 0.2.5.0
Microsoft Windows 7
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 6.3
year 2020
month 02
day 29
svn rev 77875
language R
version.string R version 3.6.3 (2020-02-29)
nickname Holding the Windsock
umap 0.2.5.0