La normalisation de la fonction de R
J'ai une matrice j'ai envie de transformer, de telle sorte que chaque entité dans la transformation du jeu de données moyenne de 0 et une variance de 1.
J'ai essayé d'utiliser le code suivant:
scale <- function(train, test)
{
trainmean <- mean(train)
trainstd <- sd(train)
xout <- test
for (i in 1:length(train[1,])) {
xout[,i] = xout[,i] - trainmean(i)
}
for (i in 1:lenght(train[1,])) {
xout[,i] = xout[,i]/trainstd[i]
}
}
invisible(xout)
normalized <- scale(train, test)
C'est, cependant, pas de travail pour moi. Suis-je sur la bonne voie?
Edit: je suis très nouveau à la syntaxe!
OriginalL'auteur Mads Obi | 2015-02-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le haut-
scale
de la fonction pour cela.Voici un exemple, où nous remplir une matrice aléatoire uniforme variates entre 0 et 1 et de centre de et de les de 0 de la moyenne et de l'unité de déviation standard:
Vérifier que la colonne moyens sont à 0 (dans la tolérance) et de leurs écarts-types sont 1:
Voir
?scale
pour plus de détails.Écrire votre propre normalisation de la fonction, vous pouvez utiliser:
ou de la suivante, qui est probablement plus rapide sur les matrices de grandes
Je vous remercie pour vos éclaircissements!
OriginalL'auteur jbaums
Juste en suggérant une autre écrite fonction de normalisation en évitant
apply
avec est de mon expérience, plus lent que la matrice de calcul:(Notez qu'ici, la ligne de vecteurs sont pris en compte)
désolé j'ai oublié de la division par
dim(m)[2]
à chaque fois, modifiés maintenantNe fonctionne toujours pas pour moi :'(
ok il y a peut être eu quelques égarés
(
comme je l'ai écrit que sans R; c'est corrigé maintenantTrès sympa! Merci pour persévérant. Je me doutais que vous étiez incapable de le tester plus tôt.
OriginalL'auteur clemlaflemme