1. 데이터셋 로드

로이터 데이터셋 : 로이터에서 공개한 짧은 뉴스 기사와 토픽의 집합

from keras.datasets import reuters

(train_data, train_labels),(test_data, test_labels) = reuters.load_data(num_words = 10000)

train_data , test_data : 뉴스 기사의 단어 인덱스 리스트

train_labels, train_labels : 46개의 토픽 중 뉴스 기사의 토픽 하나

단일 레이블 다중 분류 : 데이터의 포인트가 정확히 하나의 범주로 분류

2. 데이터 준비

import numpy as np

def vectorize_sequences(sequences, dimension=10000):
  result = np.zeros((len(sequences),dimension))
  for i, sequence in enumerate(sequences):
    result[i, sequence]=1
  return result

x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)

✔️ 원-핫 인코딩 ( 범주형 인코딩 ) 사용 → categorical_crossentropy 손실 함수로 사용

def to_one_hot(labels, dimension=46):
  result = np.zeros((len(labels),dimension))
  for i, label in enumerate(labels):
    result[i,labels]=1
  return result

y_train = to_one_hot(train_labels)
y_test = to_one_hot(test_labels)

이렇게 케라스의 내장 함수 to_categorical 를 이용해 원-핫 인코딩을 해도 된다!

from tensorflow.keras.utils import to_categorical
y_train = to_categorical(train_labels)
y_test = to_categorical(test_labels)