Estou usando o Brain para treinar uma rede neural em um conjunto de recursos que inclui valores positivos e negativos. Mas o Brain requer valores de entrada entre 0 e 1. Qual é a melhor maneira de normalizar meus dados?
Estou usando o Brain para treinar uma rede neural em um conjunto de recursos que inclui valores positivos e negativos. Mas o Brain requer valores de entrada entre 0 e 1. Qual é a melhor maneira de normalizar meus dados?
Respostas:
Isso é chamado de normalização baseada em unidade. Se você tem um vetor , pode obter uma versão normalizada, digamos Z , fazendo:
Encontre o maior número positivo e o menor (mais negativo) na matriz. Adicione o valor absoluto do menor número (mais negativo) a todos os valores da matriz. Divida cada resultado pela diferença entre o maior e o menor número.
digamos que você tenha um vetor / matriz de valores 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 );}
A saída no final será v = [0.6, 0, 1]
. Explicação:
Pressionando todo o intervalo de valores para começar de 0, para que não tenhamos negativos
Dividindo os valores por (max - min) do intervalo, para que max seja 1