Polar swarm avec R
Une méthode performante pour réduire les dimensions en cherchant à reproduire par itération un modèle de plus basse énergie qui conserve les relations de distance entre les points
L'essentiel de cette page !
Cette page explique comment faire du polar swarm, une alternative à l'ACP.
Cette modélisation finale permet d'illustre la distance entre les individus suggérée par le relief. La population rose séparée des autres par une ligne de montagnes est donc bien distantes des deux autres populations d'iris.
Tracer les résultats de la réduction dimensionnelle
#install.packages("DatabionicSwarm")
library(DatabionicSwarm)
data(iris)
# Calcul des distances entre individus
Distances <- as.matrix(dist(iris[,1:4]))
# Projection de l'essaim bionique
resultatPswarm <- Pswarm(Distances)
# Représentation directe de la projection
plot(resultatPswarm$ProjectedPoints,col=iris$Species,pch=16,cex=1.5)
Tracer le paysage qui illustre les distances entre les points
# Conversion en coordonnées de projection et U-matrice
resUmatrix <- GeneratePswarmVisualization(as.matrix(iris[,1:4]),
resultatPswarm$ProjectedPoints,resultatPswarm$LC)
#install.packages("GeneralizedUmatrix") # si cette commande marche mal, un copier collé du zip téléchargeable sur CRAN dans le répertoire library de R marche aussi.
#install.packages("matrixStats")
library(GeneralizedUmatrix)
# Représentation de la U-matrice
plotTopographicMap(resUmatrix$Umatrix,resUmatrix$Bestmatches,Cls=as.numeric(iris$Species))
Sauvegarder une série de gif pour faire un gif animé
library("rgl")
# Réaliser une série de 180 images pour faire un gif animé avec un logiciel comme Photoscape, GIMP, photofiltre, Easy GIF Animator ou gif animator.
for (i in 0:180) {
save <- par3d(userMatrix = rotationMatrix(-1, 90, i, i))
filename <- paste("pic", formatC(i, digits = 1, flag = "0"), ".png", sep = "")
rgl.snapshot(filename)
}
getwd()