더북(TheBook)

평균 벡터를 사용하여 클래스 내 산포 행렬 SW를 계산할 수 있습니다.

이 행렬은 개별 클래스 i의 산포 행렬 Si를 더해 구합니다.

>>> d = 13 # 특성 개수
>>> S_W = np.zeros((d, d))
>>> for label, mv in zip(range(1, 4), mean_vecs):
...     class_scatter = np.zeros((d, d))
>>>     for row in X_train_std[y_train == label]:
...         row, mv = row.reshape(d, 1), mv.reshape(d, 1)
...         class_scatter += (row - mv).dot((row - mv).T)
...     S_W += class_scatter
>>> print('클래스 내의 산포 행렬: %sx%s' % (
...        S_W.shape[0], S_W.shape[1]))
클래스 내의 산포 행렬: 13x13

산포 행렬을 계산할 때 훈련 데이터셋의 클래스 레이블이 균등하게 분포되어 있다고 가정합니다. 클래스 레이블의 개수를 출력해 보면 이 가정이 틀렸다는 것을 알 수 있습니다.

>>> print('클래스 레이블 분포: %s'
...       % np.bincount(y_train)[1:])
클래스 레이블 분포: [41 50 33]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.