<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 使用 Keras 分析 IMDB 电影数据
Step1:  1. 加载数据
该数据集预先加载了 Keras，所以一个简单的命令就会帮助我们训练和测试数据。 这里有一个我们想看多少单词的参数。 我们已将它设置为1000，但你可以随时尝试设置为其他数字。
Step2:  2. 检查数据
请注意，数据已经过预处理，其中所有单词都包含数字，评论作为向量与评论中包含的单词一起出现。 例如，如果单词'the'是我们词典中的第一个单词，并且评论包含单词'the'，那么在相应的向量中有 1。
输出结果是 1 和 0 的向量，其中 1 表示正面评论，0 是负面评论。
Step3:  3. 输出的 One-hot 编码
在这里，我们将输入向量转换为 (0,1)-向量。 例如，如果预处理的向量包含数字 14，则在处理的向量中，第 14 个输入将是 1。
Step4:  同时我们将对输出进行 one-hot 编码。
Step5:  4. 模型构建
使用 sequential 在这里构建模型。 请随意尝试不同的层和大小！ 此外，你可以尝试添加 dropout 层以减少过拟合。
Step6:  5. 训练模型
运行模型。 你可以尝试不同的 batch_size 和 epoch 数量！
Step7:  6. 评估模型
你可以在测试集上评估模型，这将为你提供模型的准确性。你得出的结果可以大于 85% 吗？
<ASSISTANT_TASK:>
Python Code:
# Imports
import numpy as np
import keras
from keras.datasets import imdb
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.preprocessing.text import Tokenizer
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(42)
Explanation: 使用 Keras 分析 IMDB 电影数据
End of explanation
# Loading the data (it's preloaded in Keras)
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=1000)
print(x_train.shape)
print(x_test.shape)
Explanation: 1. 加载数据
该数据集预先加载了 Keras，所以一个简单的命令就会帮助我们训练和测试数据。 这里有一个我们想看多少单词的参数。 我们已将它设置为1000，但你可以随时尝试设置为其他数字。
End of explanation
print(x_train[0])
print(y_train[0])
Explanation: 2. 检查数据
请注意，数据已经过预处理，其中所有单词都包含数字，评论作为向量与评论中包含的单词一起出现。 例如，如果单词'the'是我们词典中的第一个单词，并且评论包含单词'the'，那么在相应的向量中有 1。
输出结果是 1 和 0 的向量，其中 1 表示正面评论，0 是负面评论。
End of explanation
# One-hot encoding the output into vector mode, each of length 1000
tokenizer = Tokenizer(num_words=1000)
x_train = tokenizer.sequences_to_matrix(x_train, mode='binary')
x_test = tokenizer.sequences_to_matrix(x_test, mode='binary')
print(x_train[0])
Explanation: 3. 输出的 One-hot 编码
在这里，我们将输入向量转换为 (0,1)-向量。 例如，如果预处理的向量包含数字 14，则在处理的向量中，第 14 个输入将是 1。
End of explanation
# One-hot encoding the output
num_classes = 2
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
print(y_train.shape)
print(y_test.shape)
Explanation: 同时我们将对输出进行 one-hot 编码。
End of explanation
# TODO: Build the model architecture
model = Sequential()
model.add(Dense(128, input_dim=32))
model.add(Activation('softmax'))
model.add(Dense(10))
model.add(Activation('sigmoid'))
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics = ['accuracy'])
# TODO: Compile the model using a loss function and an optimizer.
model.summary()
Explanation: 4. 模型构建
使用 sequential 在这里构建模型。 请随意尝试不同的层和大小！ 此外，你可以尝试添加 dropout 层以减少过拟合。
End of explanation
# TODO: Run the model. Feel free to experiment with different batch sizes and number of epochs.
Explanation: 5. 训练模型
运行模型。 你可以尝试不同的 batch_size 和 epoch 数量！
End of explanation
score = model.evaluate(x_test, y_test, verbose=0)
print("Accuracy: ", score[1])
Explanation: 6. 评估模型
你可以在测试集上评估模型，这将为你提供模型的准确性。你得出的结果可以大于 85% 吗？
End of explanation
<END_TASK>