Sto usando Brain per addestrare una rete neurale su un set di funzionalità che include sia valori positivi che negativi. Ma Brain richiede valori di input compresi tra 0 e 1. Qual è il modo migliore per normalizzare i miei dati?
Sto usando Brain per addestrare una rete neurale su un set di funzionalità che include sia valori positivi che negativi. Ma Brain richiede valori di input compresi tra 0 e 1. Qual è il modo migliore per normalizzare i miei dati?
Risposte:
Questo si chiama normalizzazione basata sull'unità. Se hai un vettore , puoi ottenere una versione normalizzata di esso, diciamo Z , facendo:
Trova il numero positivo più grande e il numero più piccolo (il più negativo) nella matrice. Aggiungi il valore assoluto del numero più piccolo (il più negativo) a ogni valore dell'array. Dividi ogni risultato per la differenza tra il numero più grande e il numero più piccolo.
supponiamo che tu abbia un vettore / array di valori v = [1, -2, 3]
minV = Math.min.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] -= minV;}
maxV = Math.max.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] /= ( maxV - minV );}
L'output alla fine sarà v = [0.6, 0, 1]
. Spiegazione:
Spingendo l'intero intervallo di valori a partire da 0, in modo da non avere negativi
Dividere i valori per (max - min) dell'intervallo, in modo che max sia 1