Entiendo cómo funciona la normalización. Sumas los valores individuales del vector, divides cada valor por la suma, y voilá... suman 1.
¿Por qué no funciona cuando los restas de 1? Si todos los valores suman 1 después de la normalización, entonces los ratios no deberían funcionar así (1 - X_1).sum() == 1
?
¿Qué estoy haciendo mal? Básicamente quiero que los valores más pequeños tengan un mayor peso al final. Donde un valor de 0.0
sería 100%
(es decir, 1,0).
# Python 3 with NumPy
X = np.array([[ 58.50853002, 74.73077551, 54.46120887, 55.55526553],
[ 68.14133201, 22.2475803 , 88.79126866, 86.24927424],
[ 43.86150599, 75.99344646, 81.90051932, 50.66885662],
[ 74.81149378, 82.86920509, 36.75953127, 58.42956957]])
# Get 2nd row
X_1 = X[1,:]
# array([ 68.14133201, 22.2475803 , 88.79126866, 86.24927424])
# Get ratios for row
ratios = X_1/X_1.sum()
#array([ 0.25672106, 0.0838173 , 0.33451927, 0.32494236])
# Sum to 1
ratios.sum()
# 1.0
# Shouldn't this work?
(1 - ratios)
# array([ 0.74327894, 0.9161827 , 0.66548073, 0.67505764])
# But it doesn't...
(1 - ratios).sum()
#3.0
0 votos
No programo, así que no puedo discutir tu código. Pero cuando normalizas un vector, normalmente sumas los cuadrados, sacas la raíz cuadrada. Y dividir por esta norma.