"상관계수"로 출력된 세 값은 두 셀 앞에서 계산한 조건부 엔트로피다
#In[11]에서 entropies에 H(Y|R), H(Y|G), H(Y|B)를 담는다. In[12]는 이 변수를 초기화하지 않은 채 뒤에 세 개를 append하고, 정작 상관계수는 corrcoef라는 별도 리스트에 넣은 뒤 한 번도 사용하지 않는다. 마지막 print는 corrcoef가 아니라 entropies를 zip(..., "RGB")로 잘라 쓰므로 앞 3개, 즉 조건부 엔트로피가 그대로 나온다. objective #2의 절반이 답해진 것처럼 보이면서 실제로는 답해지지 않았다.
367| entropies = [cond_entropy(c, y) for c in [r, g, b]] ← In[11]: H(Y|RGB) ... 422| entropies.append(entropy(channel)) ← In[12]: 초기화 없이 뒤에 3개 추가 ... 435| temp = ((np.corrcoef(channel, y) + 1) * 127.5).astype(np.uint8) 436| corrcoef.append(temp.mean()) ← 계산해 놓고 어디서도 안 씀 441| print(f'Correlation Coefficient of each channel: ... zip([round(e, 4) for e in entropies], "RGB") ...')
359| H(Y|R): 4.5812, H(Y|G): 4.5869, H(Y|B): 4.7483. In[11] 398| rho(RY): 4.5812, rho(GY): 4.5869, rho(BY): 4.7483. In[12]
덧붙여, 버려진 corrcoef 값조차 맞지 않는다. channel과 y는 (374, 500) 2차원 배열이고 np.corrcoef는 행을 변수로 취급하므로 반환값은 (748, 748) 행 대 행 상관 행렬이다. 채널 간 상관이 아니다. 직접 재현해 확인했다: 같은 shape 입력으로 np.corrcoef(r, y).shape == (748, 748), 그 평균은 0.0013으로 np.corrcoef(r.ravel(), y.ravel())[0,1]과 무관한 값이다. 이 잘못된 값이 In[22]의 "Correlation coefficient: 0.2553, 0.2644, 0.2624" 표로 이어진다.