На этом шаге мы рассмотрим особенности этого набора данных.
Мы будем работать с набором данных Reuters - выборкой новостных лент и их тем, публиковавшихся агентством Reuters в 1986 году. Это простой набор данных, широко используемых для классификации текста. Существует 46 разных тем; некоторые темы представлены более широко, некоторые - менее, но для каждой из них в обучающем наборе имеется не менее десяти примеров.
Подобно IMDB и MNIST, набор данных Reuters поставляется в составе Keras. Давайте заглянем в него.
from tensorflow.keras.datasets import reuters (train_data, train_labels), (test_data, test_labels) = reuters.load_data( num_words=10000)
По аналогии с примером IMDB аргумент num_words=10000 ограничивает данные десятью тысячами наиболее часто встречающихся слов. Всего у нас имеется 8982 обучающих и 2246 контрольных примеров:
print(len(train_data)) print(len(test_data)) 8982 2246
По аналогии с отзывами в базе данных IMDB каждый пример - это список целых чисел (индексов слов):
print(train_data[10])
[1, 245, 273, 207, 156, 53, 74, 160, 26, 14, 46, 296, 26, 39, 74, 2979,
3554, 14, 46, 4689, 4329, 86, 61, 3499, 4795, 14, 61, 451, 4329, 17, 12]
Вот как можно декодировать индексы в слова (если это вам интересно).
word_index = reuters.get_word_index() reverse_word_index = dict( [(value, key) for (key, value) in word_index.items()]) # Обратите внимание, что индексы смещены на 3, потому что # индексы 0, 1 и 2 зарезервированы для слов padding (отступ), # start of sequence (начало последовательности) и unknown (неизвестно) decoded_newswire = " ".join( [reverse_word_index.get(i - 3, "?") for i in train_data[0]])
Метка, определяющая класс примера, - целое число между 0 и 45 - это индекс темы:
print(train_labels[10])
3
На следующем шаге мы рассмотрим подготовку данных.