第三章 神经网络入门
3.1电影评论分类:二分类问题
加载IMDB数据集
IMDB数据集已经经过预处理:评论(单词序列)已经被转换为整数序列,其中每个整数代表字典中的某个单词。
from keras.datasets import imdb
#num_words = 10000的意思是仅保留训练数据的前10000个最常见出现的单词,低频单词将被舍弃
#train_data和test_data是单词索引组成的列表
(train_data,train_labels),(test_data,test_labels) = imdb.load_data(num_words=10000)
train_data[0] #输出的是第一句话的单词索引,是一行数字
train_labels[0] #输出的是对应的标签,1为积极,0为消极
#解析出来相应的评论语句
word_index = imdb.get_word_index() #获取索引字典
reverse_word_index = dict([(value, key) for (key, value) in word_index.items()]) #将键值颠倒
decoded_review = ' '.join([reverse_word_index.get(i - 3, '?') for i in train_data[0]]) #解码。因为前三个是预先保留的索引,所以跳过
准备数据——将整数序列编码为二进制矩阵 one-hot编码
import numpy as np
def vectorize_sequences(sequences,dimension=10000):
results = np.zeros((len(sequences),dimension)) #创建一个形状为(len(sequence),dimension)的零矩阵
for i,sequence in enumerate(sequences):
results[i,sequence] = 1. #将results[i]的制定索引设为1
return results
#将训练数据向量化
x_train = vectorize_sequences(train_data)
#将测试数据向量化
x_test = vectorize_sequences(test_data)
#将标签向量化
y_train = np.asarray(train_labels).astype('float32')
y_test = np.asarray(test_labels).astype('float32')