J'ai un ensemble de données qui varie de 1 à 30 000 p>
Je veux la normaliser, de sorte qu'il devienne 0,1 à 10 p>
Quelle est la meilleure méthode / fonction de faire cela? p>
l'apprécierait grandement si vous pouviez donner un exemple de code! p>
4 Réponses :
x = x / 3030.3031 + 0,1 code> p>
Voici un extrait de code, en supposant que vous voulez une normalisation em> linéaire em>. C'est une version très simpliste (juste du code droit, aucune méthode), vous pouvez donc voir «Comment cela fonctionne» et peut l'appliquer à n'importe quoi. et ici. Fonction: p> (Remarque: le
to_f code> nous assure que nous ne tombons pas dans le trou noir de la division entière) p> p>
Merci Brent! c'est une bonne et élégante façon de faire cela =)
Ceci est un moyen bien connu d'échelle des numéros de collecte. Il a plus de nom plus précis mais je ne me souviens pas et je ne sais pas Google. Comme vous pouvez le constater, vous devez être conscient des problèmes d'arrondi. Vous devriez probablement aussi vous assurer que vous n'obtenez pas d'entiers comme min et max car la division entière endommagera le résultat. P> P>
Voici la voie de rubis pour le cas commun de réglage de Min de matrice à 0,0 et max à 1,0. pour un min et max autres que 0 et 1, ajoutez des arguments à Normaliser! code> à la manière de la réponse d'Elfstrom. P> p>
Êtes-vous sûr que cela s'appelle la normalisation des données? Vous pouvez envisager d'appeler cette transformation de données, je pense que la normalisation fait référence à la topologie des données.