专栏首页毛利学Python回顾——keras电影评价预测

回顾——keras电影评价预测

学习一时爽,一直学习一直爽

回顾以前的笔记 (于3月份记录的)

在keras中,内置了imdb电影评分数据集,来进行评价预测

安装keras

conda install keras

conda就帮依赖全部搞定,记得加源

导入imdb

from keras.datasets import imdb

数据集简要说明

  • 一个长长的英文句子,有的有几千单词,有的有几十,分类成好的评价和不好的评价

在数据中不是单词,而是单词的索引 一共就5万句子

import keras
from keras import layers
import matplotlib.pyplot as plt
%matplotlib inline
data = keras.datasets.imdb
max_word = 10000
# 加载前10000个单词 最大不超过10000
(x_train, y_train), (x_test, y_test) = data.load_data(num_words=max_word)

查看数据

x_train.shape, y_train.shape
OUT:
((25000,), (25000,))
x_train[0]
y_train[0]
OUT:
输出的是
词汇的index
输出的是 
array([1, 0, 0, ..., 0, 1, 0], dtype=int64)
1 代表 正面评价 0 代表负面怕评价

加载index和词汇的对应关系

#加载词汇
word_index = data.get_word_index()
#将index和value 互换
index_word = dict((value, key) for key,value in word_index.items())

在这里插入图片描述 打印第一个评论

# 在index_word中前三个不是需要的单词 ,去除
[index_word.get(index-3, '?') for index in x_train[0]]
OUT:
['?','this','film','was','just','brilliant','casting','location','scenery','story','direction',"everyone's", 'really', ……]

查看数据的长度

[len(seq) for seq in x_train]
max([max(seq) for seq in x_train])
OUT:
[218,189,141,550,147,……] #每条评论的单词量为这么多
9999

果然最长的不超过10000

文本的向量化(下次用pad_sequences)

# 将x_train 中的25000条评论 25000*10000的矩阵
# 该词出现为1 ,不出现为0 
def k_hot(seqs, dim=10000):
    result = np.zeros((len(seqs), dim))
    for i, seq in enumerate(seqs):
        result[i, seq] = 1
    return result
x_train = k_hot(x_train)

可以看下x_train 和y_train 数据

在这里插入图片描述

模型的训练

补充模型

  • input_dim 就是x_trian 的数量10000
  • relu激活
  • 二分类sigmoid
  • 优化adam
  • 损失函数二分类binary_crossentropy
model = keras.Sequential()
model.add(layers.Dense(32, input_dim=10000, activation='relu'))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['acc']
)
history = model.fit(x_train, y_train, epochs=15, batch_size=256, validation_data=(x_test, y_test))
plt.plot(history.epoch, history.history.get('loss'), c='r', label='loss')
plt.plot(history.epoch, history.history.get('val_loss'), c='b', label='val_loss')
plt.legend()
plt.plot(history.epoch, history.history.get('acc'), c='r', label='acc')
plt.plot(history.epoch, history.history.get('val_acc'), c='b', label='val_acc')
plt.legend()

在这里插入图片描述

不用看了过拟合,加dropout,下文继续

本文分享自微信公众号 - 毛利学Python(sen13717378202)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 最全的AI速查表|神经网络,机器学习,深度学习

    过去的几个月中,我都在收集AI速查表。我时不时的分享给同学和朋友,他们经常问我要。所以我决定整理一下,发出来。为了让这件事情更加有趣,我对每个主题加了点描述。

    AI算法与图像处理
  • 大牛出品:TensorFlow 2.0入门指南

    前几天,TensorFlow 2.0正式发布。如果你对新的深度学习框架还不熟悉,推荐看看这篇集简介、速成课程、API速查参考为一体的Overview。

    量子位
  • AutoKeras---自动机器学习

    Auto-Keras是用于自动机器学习的开源软件库。目的是让仅拥有一定数据科学知识或机器学习背景的行业专家可以轻松地应用深度学习模型。

    我被狗咬了
  • 深度学习四大名著之《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第二版

    《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第二版

    SeanCheney
  • 【干货】史上最全的Keras学习资源汇总(文末福利)

    Keras是Python中以CNTK、Tensorflow或者Theano为计算后台的一个深度学习建模环境。

    磐创AI
  • 机器学习-手写数字识别

    据说,在命令行窗口打印出‘hello,world’是入门编程语言的第一个程序,那么手写数字识别就是机器学习的hello,world了,学习的东西不经常复习的容易...

    sjw1998
  • tensorflow学习(keras)

    keras是一个可用于快速构建和训练深度学习模型的API。里面的模型的一般的使用流程如下:

    opprash
  • Keras之父出品:Twitter超千赞TF 2.0 + Keras速成课程

    可能没人比François Chollet更了解Keras吧?作为Keras的开发者François对Keras可以说是了如指掌。他可以接触到Keras的更新全...

    新智元
  • 程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

    然而,一个来自意大利拉不勒斯的小哥哥,决定利用“舞步”(身体姿势)来控制自己家的灯,整个过程利用一个神经网络实现。

    CDA数据分析师
  • 一文综述神经网络中常用的损失函数 | DL入门

    不同的损失函数可用于不同的目标。在这篇文章中,我将带你通过一些示例介绍一些非常常用的损失函数。这篇文章提到的一些参数细节都属于tensorflow或者keras...

    磐创AI

扫码关注云+社区

领取腾讯云代金券