Closed pgw928 closed 3 years ago
안녕하세요. 말씀주신 사항은 1쇄에서 오탈자로 등록된 사항으로, 2쇄에서는 수정되었습니다. 구체적으로는 다음 코드를 수정하시면 됩니다.
126쪽, 예제 5.15의 2번째 줄
wine_norm = (wine - wine.min()) / (wine.max() - wine.min())
==>
wine_backup = wine.copy()
wine_norm = (wine - wine.min()) / (wine.max() - wine.min())
wine_norm['new_quality'] = wine_backup['new_quality']
해당 오탈자는 위키북스 홈페이지의 정오표에서도 확인하실 수 있습니다. 불편을 드려 죄송합니다. 감사합니다.
책 기준 5.2(123p~) wine에 관해 new_quality라는 새로운 label을 만들고 min-max scaling을 label까지 진행한 후 tf.keras.utils.to_categorical을 사용해 one-hot encoding을 진행하는 과정에서 문제가 있는 것 같습니다. 우선 label을 scaling을 하면 label : [0, 1, 2] => [0, 0.5, 1] 로 변경되는데 여기서 one-hot encoding을 사용하면 category가 2개로 줄어버립니다. 즉, one-hot으로 바꾸고 train_Y.sum(axis=0)을 찍어봤을 때 array([4167., 1030., 0.], dtype=float32) 이 나옵니다.
예를 들어, float에 대해서 다음과 같이 나오게 됩니다. a = np.array([0.1, 0.2, 0.3]).reshape(-1,1) a = tf.keras.utils.to_categorical(a, num_classes=3) print(a) [[1. 0. 0.] [1. 0. 0.] [1. 0. 0.]]
제가 min-max scaling을 label을 제외한 feature들에 대해서만 사용하고 one-hot으로 변경안하고 sparse_categorical_crossentropy를 사용했을 때 acc가 50프로 정도밖에 안 나와 원인을 찾던 중에 발견했습니다.
읽어주셔서 감사합니다.