#加载imdb数据集
from keras.datasets import imdb
(train_data,train_labels),(test_data,test_labels)=imdb.load_data(num_words=10000)#仅保留训练数据中前10000个最常用的单词

train_data[0]#第一个评论单词所对应的数字索引

train_labels[0]#第一个评论为正面

max([max(sequence)for sequence in train_data])#限定单词索引,不超过10000

#将数字解码成对应的英文单词
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]])#减去了3因为0,1,2是为填充,序列开始,未知词分别保留的索引
#将整数序列编码为二进制矩阵
import numpy as np def vectorize_sequences(sequences,dimension=10000):#创建一个函数包括两个参数,一个为序列,一个是维数results=np.zeros((len(sequences),dimension))#创建一个矩阵for i,sequence in enumerate(sequences):#利用enumerate函数可以同时获得值和索引results[i,sequence]=1.#将results【i】指定索引设为1return resultsx_train=vectorize_sequences(train_data)#将训练数据向量化
x_test=vectorize_sequences(test_data)#将测试数据向量化
x_train[0]#样本

y_train=np.asarray(train_labels).astype('float32')#训练标签向量化
y_test=np.asarray(test_labels).astype('float32')#测试标签向量化
#模型定义
from keras import models#导入models
from keras import layers#导入layers
model=models.Sequential()#采用sequential模型
model.add(layers.Dense(16,activation='relu',input_shape=(10000,)))#采用16个隐藏节点,激活函数选择relu,输入为10000维
model.add(layers.Dense(16,activation='relu'))#采用16个隐藏节点,激活函数选择relu,输入为10000维
model.add(layers.Dense(1,activation='sigmoid'))#输出一个节点,激活函数采用sigmoid函数
#编译模型
model.compile(optimizer='rmsprop',#优化器选择rmsproploss='binary_crossentropy',#损失函数采用二元交叉熵metrics=['accuracy'])#用精度作为评价标准
#配置优化器
from keras  import optimizers
model.compile(optimizer=optimizers.RMSprop(lr=0.001),#学习率设置为0.001loss='binary_crossentropy',#损失函数和评估方式不变metrics=['accuracy'])
#使用自定义的损失和指标
from keras import losses
from keras import metrics
model.compile(optimizer=optimizers.RMSprop(lr=0.001),#优化器不变loss=losses.binary_crossentropy,#自定义自己的损失函数和评价标准metrics=[metrics.binary_accuracy])
#留出验证集
x_val=x_train[:10000]#留出一万个作为验证集
partial_x_train=x_train[10000:]#剩下的训练集y_val=y_train[:10000]
partial_y_train=y_train[10000:]
#训练模型
model.compile(optimizer='rmsprop',#优化器loss='binary_crossentropy',#损失函数metrics=['acc'])#评价标准
history=model.fit(partial_x_train,partial_y_train,epochs=20,#迭代20次batch_size=512,#512个组成的小批量validation_data=(x_val,y_val))

history_dict=history.history#model.fit返回一个histoty对象,包含所有数据
history_dict.keys()
dict_keys(['loss', 'acc', 'val_loss', 'val_acc'])
#绘制训练损失和验证损失
import matplotlib.pyplot as plt#导入画图的包
history_dict=history.history#生成一个字典对象
loss_values=history_dict['loss']#训练过程中监控的指标
val_loss_values=history_dict['val_loss']epochs=range(1,len(loss_values)+1)#循环次数plt.plot(epochs,loss_values,'bo',label='Training loss')
plt.plot(epochs,val_loss_values,'b',label='Validation loss')#指定图像横坐标,纵坐标,图例,颜色
plt.title('Training and validation loss')#名称
plt.xlabel('Epochs')#横坐标
plt.ylabel('Loss')#纵坐标
plt.legend()
plt.show()

#绘制训练精度和验证精度
plt.clf()#清空图形
acc=history_dict['acc']#训练过程中监控的指标
val_acc=history_dict['val_acc']plt.plot(epochs,acc,'bo',label='Training acc')#图像细节
plt.plot(epochs,val_acc,'b',label='Validation acc')
plt.title('Training and validation acc')#名字
plt.xlabel('Epochs')#横坐标
plt.ylabel('Accuracy')#纵坐标
plt.legend()#图例
plt.show()#显示


#从头开始训练一个模型
model=models.Sequential()
model.add(layers.Dense(16,activation='relu',input_shape=(10000,)))
model.add(layers.Dense(16,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=4,batch_size=512)
results=model.evaluate(x_test,y_test)

#使用训练好的网络在新数据上生成预测结果。
model.predict(x_test)


imdb数据集电影评论分类相关推荐

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

    原创不易,如果有转载需要的话,请在首行附上本文地址,谢谢. 第一步加载IMDB数据集,如若加载不成功,这里提供一种解决方法:点开IMDB数据下载链接(喜欢的话给个小星星和follow一下),fork到 ...

  2. (imdb数据集)电影评论分类实战:二分类问题

    目录 前言 一.电影评论分类实战 1-1.数据集介绍&数据集导入&分割数据集 1-2.字典的键值对颠倒&数字评论解码 1-3.将整数序列转化为张量(训练数据和标签) 1-4.搭 ...

  3. 使用朴素贝叶斯对电影评论分类

    本文内容: 使用朴素贝叶斯对电影评论分类 1.数据集讲解: 2.具体实现: 3.实验结果: 实验总结 代码地址 使用朴素贝叶斯对电影评论分类 1.数据集讲解: ​ 该数据集是IMDB电影数据集的一个子 ...

  4. 电影评论分类(python深度学习——二分类问题)

    记:二分类问题应该是应用最广泛的机器学习问题,电影评论分类是指根据电影评论的文字内容,将其划分为正面评论或者是负面评论,是一个二分类问题,我从头到尾学习了代码,并且进行了整理,有的内容是个人理解,如有 ...

  5. 电影评论分类:二分类问题 —— R语言实现

    前言 在R和Python之间如何进行选择一直是一个热议的话题.机器学习世界也被不同语言偏好所划分.但是随着深度学习的盛行,天平逐渐向Python倾斜,因为截至目前为止Python具有大量R所没有的深度 ...

  6. 【深度学习kears+tensorflow】电影评论分类:二分类问题

    目录 Classifying movie reviews: a binary classification example 电影评论分类:二分类问题 The IMDB dataset IMDB 数据集 ...

  7. 深度学习入门系列21:项目:用LSTM+CNN对电影评论分类

    大家好,我技术人Howzit,这是深度学习入门系列第二十一篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列 ...

  8. keras电影评论分类

    keras之电影评论分类 数据集 代码讲解 1.模块导入: 2.加载imdb数据集: 3.数据预处理: 4.构建网络: 5.配置模型参数: 6.训练模型: 7.绘制损失和准确率图像: 完整代码: 数据 ...

  9. Keras深度学习(2)-二分类问题之电影评论分类

    二分类问题可能是应用最广泛的机器学习问题.在这个例子中,你将学习根据电影评论的文字内容将其划分为正面或负面. 本节使用 IMDB 数据集,它包含来自互联网电影数据库(IMDB)的 50 000 条严重 ...

  10. 电影评论分类:二分类问题

    根据电影评论的 文字内容将其划分为正面或负面. 使用IMDB 数据集,它包含来自互联网电影数据库(IMDB)的50 000 条严重两极分 化的评论.数据集被分为用于训练的25 000 条评论与用于测试 ...

最新文章

  1. ai不同形状的拼版插件_AI矩形/异型自动排料插件AINester 16.0(支持Illustrator CC 2015/2017)...
  2. appium执行iOS测试脚本并发问题
  3. python爬虫beautifulsoup_python爬虫beautifulsoup解析html方法
  4. HTML5导航栏菜单的设计与实现
  5. Halcon:基本例程
  6. URDF与xacro
  7. 端口镜像在网络安全中的应用
  8. hibernate笔记4--qbc查询
  9. 面试必备项目之从零开发大众点评后端(SSM)
  10. 高性能MySQL读书笔记——开天辟地
  11. 霍兰德SC型如何选专业?霍兰德职业兴趣测试
  12. windows下的内存型下载者病毒
  13. html 动态文本框的值,HTML Javascript动态添加和删除文本框
  14. 微信内测一个手机可注册2微信号
  15. android模拟器安装
  16. 双十一到了,当我用Python采集了电商平台所有商品后发现....
  17. linux重新初始化网络命令,如何在Ubuntu 18.04 Bionic Beaver Linux上重新启动网络
  18. Git 如何生成SSH key
  19. PHPMyWind支持ppt上传
  20. mysql数据源配置

热门文章

  1. 武昌职业学院与湖北美和易思教育科技有限公司校企签约揭牌仪式隆重举行
  2. Windows实现微信多开
  3. manjaro设置字体_Manjaro 20.03字体美化的2.5个级别
  4. day7 作业实现:四层字典嵌套循环
  5. 什么是区块链BaaS平台?
  6. 项目管理到底是一个什么样的职位,具体都做些什么事情?
  7. csp是什么比赛_CSP-J/S认证 NOIP、NOI信息学竞赛解读!
  8. 笔记本一直提示计算机内存不足怎么办,笔记本电脑内存不足怎么解决
  9. 二进制反码求和java_有趣的二进制-浮点数
  10. matlab geodetic2ecef,卫星轨道问题