文本分类imdb数据集
时间: 2025-01-01 21:31:44 浏览: 8
### 使用IMDB数据集进行文本分类
#### 数据准备
为了使用IMDB数据集进行文本分类,首先需要加载并预处理该数据集。IMDB数据集由大量电影评论组成,每条评论被标记为正面或负面情绪标签。
```python
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
max_features = 10000 # 只考虑最常见的前10,000个单词
maxlen = 200 # 将所有序列截断或填充到相同长度200
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
# 填充序列至固定长度
x_train = pad_sequences(x_train, maxlen=maxlen)
x_test = pad_sequences(x_test, maxlen=maxlen)
```
这段代码展示了如何利用Keras内置函数`imdb.load_data()`下载经过预处理的IMDB数据集[^1]。这里设置参数`num_words=10000`表示只保留训练集中频率最高的1万个词;而`pad_sequences()`用于确保输入张量具有相同的维度以便后续模型处理。
#### 构建模型架构
接下来定义一个简单的循环神经网络(RNN),它能够有效地捕捉文本中的长期依赖关系:
```python
model = tf.keras.Sequential([
tf.keras.layers.Embedding(input_dim=max_features, output_dim=128),
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dropout(0.5),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
```
上述模型结构包含了嵌入层(embedding layer)[^2]、双向LSTM(bidirectional LSTM)以及全连接层(Dense layers)。其中Embedding层负责将整数索引转换成密集向量形式;Bi-LSTM可以更好地理解上下文信息;最后通过Sigmoid激活函数输出二元分类概率值。
#### 训练过程
完成模型搭建之后就可以开始训练了:
```python
history = model.fit(x_train, y_train,
epochs=5,
batch_size=64,
validation_split=0.2)
```
此部分设置了五个epoch周期来进行迭代优化,并采用批量大小(batch size)=64加快收敛速度。同时划分出20%的数据作为验证集来监控过拟合情况。
#### 测试评估
当训练完成后还需要对测试样本做最终性能评测:
```python
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Test Accuracy: {test_acc:.3f}')
```
这一步骤会计算整个测试集合上的平均损失(loss)和准确率(acc),从而衡量所构建模型的实际效果。
阅读全文