Normalizer 클래스의 norm 매개변수에 사용할 노름을 지정할 수 있습니다. 'l1', 'l2', 'max'가 가능합니다. 기본값은 'l2'입니다. 이들의 차이점을 알아보기 위해 ex 배열을 사용하여 직접 계산해 보겠습니다. 원래 특성을 제곱한 행을 하나 더 추가하고 0 나눗셈 오류를 다루기 번거로우므로 편의상 0을 제외합니다.
>>> ex_2f = np.vstack((ex[1:], ex[1:]**2))
>>> ex_2f
array([[ 1, 2, 3, 4, 5],
[ 1, 4, 9, 16, 25]])
L 2 노름의 공식은 다음과 같습니다.
샘플별로 특성의 제곱을 더하기 위해 sum() 함수에서 axis=1을 사용합니다. 이 값의 제곱근을 구하면 L 2 노름입니다. 그다음 각 샘플의 특성을 해당 L 2 노름으로 나눕니다.
>>> l2_norm = np.sqrt(np.sum(ex_2f ** 2, axis=1))
>>> print(l2_norm)
[ 7.41619849 31.28897569]
>>> ex_2f / l2_norm.reshape(-1, 1)
array([[0.13483997, 0.26967994, 0.40451992, 0.53935989, 0.67419986],
[0.03196014, 0.12784055, 0.28764125, 0.51136222, 0.79900347]])