개별 산포 행렬 Si를 산포 행렬 Sw로 모두 더하기 전에 스케일을 조정해야 합니다. 산포 행렬을 클래스 샘플 개수 ni로 나누면 사실 산포 행렬을 계산하는 것이 공분산 행렬 ∑i를 계산하는 것과 같아집니다. 즉, 공분산 행렬은 산포 행렬의 정규화 버전입니다.
>>> d = 13 # 특성 개수
>>> S_W = np.zeros((d, d))
>>> for label, mv in zip(range(1, 4), mean_vecs):
... class_scatter = np.cov(X_train_std[y_train==label].T)
... S_W += class_scatter
>>> print('스케일 조정된 클래스 내의 산포 행렬: ',
... f'{S_W.shape[0]}x{S_W.shape[1]}')
스케일 조정된 클래스 내의 산포 행렬: 13x13
클래스 내 산포 행렬(또는 공분산 행렬)을 계산한 후 다음 단계로 넘어가 클래스 간의 산포 행렬 SB를 계산하겠습니다.