大数据分析技术

陈清华、田启明、施郁文等

目录

  • 课程简介
    • ● 课程简介
  • 环境准备
    • ● Anaconda环境安装与使用
    • ● Pycharm环境安装
    • ● 常用第三方包的安装与配置
  • 项目一 电影数据统计
    • ● 任务简介
    • ● 数据获取
    • ● 数据解析
    • ● 数据分析
    • ● 数据可视化
    • ● 课堂思政:新型冠状病毒疫情分析与可视化
    • ● 课堂思政:中国工匠精神
  • 项目二 电影数据分析(回归)
    • ● 任务简介
    • ● 使用一元线性回归分析电影票房数据
    • ● 使用多项式回归分析电影票房数据
    • ● 使用多元线性回归分析电影票房数据
    • ● 课堂实训:工资分析
  • 项目三 爬取房产租赁数据
    • ● 任务简介
    • ● 电影数据爬取
    • ● 房产租赁数据爬取
    • ● 房产租赁数据统计
    • ● 课后实训:二手房数据爬取
    • ● 课堂思政:疫情数据的爬取与可视化
  • 项目四 房屋租赁数据分析与可视化
    • ● 任务简介
    • ● 使用箱形图展现租赁价格分布特征
    • ● 使用散点图展现房屋面积与租赁价格的关系
    • ● 使用饼图展现不同行政区域的可租赁房源占比
    • ● 使用折线图可视化房间数与租赁价格的关系
    • ● 使用热力图展现地理位置的影响
    • ● 课后实训:二手房数据分析
    • ● 课堂思政:疫情数据分析与可视化
  • 项目五 身高与体重数据分析(分类器)
    • ● 使用身高、体重数据进行性别分类
      • ● 使用逻辑回归进行性别分类
      • ● 使用朴素贝叶斯进行性别分类
      • ● 使用决策树模型进行性别分类
      • ● 使用支持向量机进行性别分类
    • ● 使用支持向量机进行肥胖程度分类
    • ● 课后实训: 身高体重数据分析(分类器)
  • 项目六 鸢尾花分类
    • ● 任务简介
    • ● 使用K近邻对鸢尾花进行分类
    • ● 使用随机森林对鸢尾花进行分类
    • ● 使用神经网络对鸢尾花进行分类
  • 项目七 电影评分数据分析(聚类)
    • ● 任务简介
    • ● 使用BDSCAN确定质心个数
    • ● 使用K-Means对观影用户进行聚类
  • 项目八 人脸检测与人脸识别
    • ● 任务简介
    • ● 图像中的人脸检测
    • ● 视频中的人脸检测
    • ● 图像中的人脸识别
    • ● 视频中的人脸识别
    • ● 课后实训:眼睛与笑脸检测
    • ● 课堂思政:人工智能与弯道超车
  • 项目九 手写数字识别应用
    • ● 任务简介
    • ● 图像数据集准备
    • ● 使支持向量机识别手写数字
    • ● 使用神经网络识别手写数字
    • ● 课后实训:使用不同的机器学习方法识别数字手写体
  • 项目十  深度学习在行为识别中的应用
    • ● 任务简介
    • ● 使用卷积神经网络识别行为
    • ● 使用循环神经网络识别行为
    • ● 课后实训:电影评论数据分析
  • 项目十一 TensorFlow与神经网络
    • ● 任务简介
    • ● 使用单层神经网络预测花瓣宽度
    • ● 设计多层神经网络实现鸢尾花分类
    • ● 课后实训:卷积神经网络的实现与应用
  • 项目综合实训(17级学生案例)
    • ● 综合实训要求
    • ● 确定数据采集目标
    • ● 数据采集与预处理
    • ● 数据统计与分析
    • ● 数据分析与预测
    • ● 数据分类应用
    • ● 17级实训案例:二手车数据获取与市场分析
课后实训:电影评论数据分析

【实训目的】

通过本次实训,要求了解第三工具包的应用,同时了解深度学习算法中循环神经网络在自然语言处理中的应用。

【实训环境】

PyCharm环境、Python 3.7、Pandas、NumPy、Matplotlib、scikit-learn、TensorFlow、Keras

【实训内容】使用循环神经网络识别IMDB影评数据的情感

IMDB评论数据进行情感分析有很多的应用场景。比如:做一个电商网站,卖家需要时刻关心用户对于商品的评论是否是正面的。再比如做一个电影的宣传和策划,电影在观众中的口碑也至关重要。

 IMDB是电影评论情感数据,这些数据标识有情感标签(正面/负面)。数据包含50000条电影评论,其中有25000条训练数据以及25000条评估数据,有着相同数量的正面与负面评论。IMDB中的数据已经被预处理好,为整数序列,每个整数代表着一个特定单词。用0和1来确定label的种类。其中0表示负面影评,1表示正面影评。

对IMDB中的电影评论进行分类,是一个二分类的问题,这是一种重要且广泛适用的机器学习问题。其参考代码如下所示:

 

import numpy  as np
 
import pandas as pd
 
from keras.preprocessing import  sequence
 
from keras.models import  Sequential
 
from keras.layers import  Dense, Dropout, Embedding, LSTM, Bidirectional
 
from keras.datasets import  imdb
 
from sklearn.metrics import  accuracy_score,classification_report
 
 
# Max features are limited
 
max_features = 15000  # 设置最大特征为15000
 
max_len = 300 #单个句子最大长度为300
 
batch_size = 64#每个批次大小
 
 #
加载数据
 
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
 
print(len(x_train),  'train observations')
 
print(len(x_test),  'test observations')
 
# 使得数据长度保持一致
 
x_train_2 = sequence.pad_sequences(x_train, maxlen=max_len)
 x_test_2 = sequence.pad_sequences(x_test,
maxlen=max_len)
 
print('x_train  shape:', x_train_2.shape)
 
print('x_test  shape:', x_test_2.shape)
 y_train = np.array(y_train)
 y_test = np.array(y_test)
 
# 构建模型
 
model = Sequential()
 model.add(Embedding(max_features,
128, input_length=max_len))
 model.add(LSTM(
64))
 model.add(Dense(
1, activation='sigmoid'))
 model.compile(
'adam', 'binary_crossentropy',  metrics=['accuracy'])
 
# 训练模型
 
model.fit(x_train_2, y_train,batch_size=batch_size,epochs=4,validation_split=0.2)
 
# 模型预测
 
y_train_predclass = model.predict_classes(x_train_2,batch_size=100)
 y_test_predclass = model.predict_classes(x_test_2,
batch_size=100)
 y_train_predclass.shape = y_train.shape
 y_test_predclass.shape = y_test.shape
 
# 输出模型评估结果
 
print (("\nLSTM  Bidirectional Sentiment Classification   - Test accuracy:"),(round(accuracy_score(y_test,y_test_predclass),3)))
 
print  ("\nLSTM  Bidirectional Sentiment Classification of Test data\n",classification_report(y_test,  y_test_predclass))
 
print  ("\nLSTM  Bidirectional Sentiment Classification - Test Confusion Matrix\n\n",pd.crosstab(y_test,  y_test_predclass,rownames = ["Actuall"],colnames = ["Predicted"]))     

 

    运行过程数据如下所示:

     运行结果如下所示,其中测试集的预测精确率约为84.2%。


根据以上运行结果,选择更为合适的参数以期获得更好的结果。