基于Keras的imdb数据集电影评论情感二分类

本文介绍了如何利用Keras对IMDB数据集进行电影评论的情感二分类,包括数据预处理、构建网络模型、模型训练和验证,以及模型在新数据上的预测。在训练过程中,注意到模型在验证集上出现了过拟合现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IMDB数据集下载速度慢,可以在我的[repo库](> IMDB数据集下载速度慢,可以在我的repo库中找到下载,下载后放到/.keras/datasets/目录下,即可正常运行。)中找到下载,下载后**放到/.keras/datasets/目录下**,即可正常运行。

电影评论分类:二分类

二分类可能是机器学习最常解决的问题。我们将基于评论的内容将电影评论分类:正类和负类。

IMDB数据集

IMDB数据集有5万条来自网络电影数据库的评论;其中2万5千条用来训练,2万5千条用来测试,每个部分正负评论各占50%.
划分训练集、测试集的必要性:不能在相同的数据集上对机器学习模型进行测试。因为在训练集上模型表现好并不意味着泛化能力好(在没有见过的数据上仍然表现良好),而我们关心的是模型的泛化能力.
和MNIST数据集类似,IMDB数据集也集成在Keras中,同时经过了预处理:电影评论转换成了一系列数字,每个数字代表字典中的一个单词。

加载数据集

from keras.datasets import imdb

(train_data,train_labels),(test_data,test_labels) = imdb.load_data(num_words=10000)

num_words=10000意味着只保留训练集中最常出现的前10000个词,不经常出现的单词被抛弃—最终所有评论的维度保持相同。
变量train_data,test_data是电影评论的列表,每条评论由数字(对应单词在词典中出现的位置下标)列表组成。train_labels,test_labels是0,1列表,0负面评论,1表示正面评论。

>>> train_data[0]
[1, 14, 22, 16, ... 178, 32]
>>> train_labels[0]
1

预处理数据

不能直接将list类型的数据送到神经网络中训练,必须将list类型转换为tensor张量类型。有两种转换方式:

  • 填充列表使每个列表长度都相同,然后转换为整数类型的张量,形状为(samples, word_indices),使用张量作为神经网络的第一层(Embedding层,能处理这样的整数类型张量);
  • 将列表进行one-hot编码,转换成0、 1向量。然后用Dense网络层作为神经网络的第一层,处理浮点类型向量数据。
import numpy as np

def vectorize_sequences(sequences, dimension=10000):
	results = np.zeros((len(sequences), dimension)) #数据集长度,每个评论维度10000
	for i, sequence in enumerate(sequences):
		results[i, sequence] = 1 # one-hot
	return results

x_train = vectorize_sequences(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值