Шаг 102.
Глубокое обучение на Python. ... . Классификация новостных лент: пример классификации в несколько классов. Подготовка данных

    На этом шаге мы рассмотрим особенности такой подготовки.

    Для векторизации данных можно повторно использовать код из предыдущего примера.


Пример 4.13. Кодирование данных
import numpy as np

def vectorize_sequences(sequences, dimension=10000): 
  # Создание матрицы с формой (len(sequences), dimension), 
  # заполненной нулями
  results = np.zeros((len(sequences), dimension)) 
  for i, sequence in enumerate(sequences): 
    for j in sequence: 
      # Запись единицы в элемент с данным индексом
      results[i, j] = 1. 
  return results
  
# Векторизованные обучающие данные
x_train = vectorize_sequences(train_data)
# Векторизованные контрольные данные
x_test = vectorize_sequences(test_data)

    Векторизовать метки можно двумя способами: сохранить их в тензоре целых чисел или использовать прямое кодирование. Прямое кодирование (one-hot encoding) широко используется для подготовки категорийных данных и также называется кодированием категорий (categorical encoding). В данном случае прямое кодирование меток заключается в конструировании вектора с нулевыми элементами и значением 1 в элементе, индекс которого соответствует индексу метки. Пример 4.14 это иллюстрирует.


Пример 4.14. Кодирование меток
def to_one_hot(labels, dimension=46): 
  results = np.zeros((len(labels), dimension)) 
  for i, label in enumerate(labels): 
    results[i, label] = 1. 
    return results
    
# Векторизованные обучающие метки
y_train = to_one_hot(train_labels)
# Векторизованные контрольные метки
y_test = to_one_hot(test_labels)

    Следует отметить, что этот способ уже реализован в Keras:


from tensorflow.keras.utils import to_categorical

y_train = to_categorical(train_labels)
y_test = to_categorical(test_labels)

    На следующем шаге мы рассмотрим конструирование модели.




Предыдущий шаг Содержание Следующий шаг