12
votes

Normalisation du jeu de données avec rubis

J'ai un ensemble de données qui varie de 1 à 30 000

Je veux la normaliser, de sorte qu'il devienne 0,1 à 10

Quelle est la meilleure méthode / fonction de faire cela?

l'apprécierait grandement si vous pouviez donner un exemple de code!


1 commentaires

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


4 Réponses :


-1
votes

x = x / 3030.3031 + 0,1


0 commentaires

15
votes

Voici un extrait de code, en supposant que vous voulez une normalisation linéaire . 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. XXX


et ici. Fonction: xxx

(Remarque: le to_f nous assure que nous ne tombons pas dans le trou noir de la division entière)


1 commentaires

Merci Brent! c'est une bonne et élégante façon de faire cela =)



8
votes

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

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.


0 commentaires

8
votes

Voici la voie de rubis pour le cas commun de réglage de Min de matrice à 0,0 et max à 1,0. xxx

pour un min et max autres que 0 et 1, ajoutez des arguments à Normaliser! à la manière de la réponse d'Elfstrom.


0 commentaires