더북(TheBook)

3.3.1 범주형 데이터의 원-핫 인코딩

붓꽃 품종 문제를 해결하는 모델을 알아보기 전에 다중 분류 문제에서 범주형30 타깃(품종)을 표현하는 방법을 설명할 필요가 있습니다. 지금까지 이 책에서 다룬 모든 머신 러닝 문제는 간단하게 타깃을 표현합니다. 다운로드 시간 예측 문제나 보스턴 주택 문제에서는 하나의 숫자이고 피싱 감지 문제에서는 이진 타깃을 위한 0-1 표현입니다. 하지만 붓꽃 문제의 경우 세 개의 꽃 품종을 원-핫 인코딩(one-hot encoding)이라는 방식으로 표현합니다. data.js 파일을 열어 다음 라인을 찾아보세요.

const ys = tf.oneHot(tf.tensor1d(shuffledTargets).toInt(), IRIS_NUM_CLASSES);

shuffledTargets는 샘플의 정수 레이블을 섞어 놓은 평범한 자바스크립트 배열입니다. 각 원소의 값은 0, 1, 2 중 하나이며 붓꽃의 품종을 나타냅니다. tf.tensor1d(shuffledTargets).toInt()를 호출하여 int32 타입의 1D 텐서로 변환합니다. 만들어진 1D 텐서가 tf.oneHot() 함수에 전달되어 [numExamples, IRIS_NUM_CLASSES] 크기의 2D 텐서가 반환됩니다. numExamplestargets에 있는 샘플의 개수입니다. IRIS_NUM_CLASSES는 붓꽃의 품종 개수로 상수 3입니다. 앞의 코드 다음 라인에 targetsys를 출력하여 실제 값을 확인해 볼 수 있습니다.

const ys = tf.oneHot(tf.tensor1d(shuffledTargets).toInt(), IRIS_NUM_CLASSES);
// 'targets'와 'ys' 값을 출력하는 라인 추가
console.log('targets 값:', targets);
ys.print();31
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.