大数据分析技术

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

目录

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

事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。

在电影产业中,一个电影的评分可能与多项因素相关。假设评分与电影日均票房、放映天数、电影类型等因素有关(此处我们仅关注是否爱情片),我们在使用回归分析时就需要用多元回归对评分进行相关分析与预测。

任务3:根据电影日均票房、放映周期、电影类型(是否爱情片),使用多元线性回归分析模型来预测电影评分。


  • 步骤一:数据准备,从文件中读入数据,整理需要的数据源,代码如下:

 

# 读入数据
 
df  = pd.read_csv('film.txt', delimiter=';')
 df =df[[
'影片类型','上映时间','闭映时间', '票房/','评分']]
 
#  数据清洗
 
df  = df.dropna()
 df = df.drop_duplicates()
 
#  数据整理
 
df['上映时间'] = pd.to_datetime(df['上映时间'])
 df[
'闭映时间'] = pd.to_datetime(df['闭映时间'])
 df[
'放映周期'] = (df['闭映时间'] - df['上映时间']).dt.days + 1
 
df['票房/'] = df['票房/'].astype(float64)
 df[
'日均票房/'] = df['票房/']/df['放映周期']
 df[
'评分'] = df['评分'].astype(float64)
 df[
'是否爱情片']= df['影片类型'].str.contains('爱情').astype(str)
 name_to_type = {
'True':'1','False':'0'};
 df[
'影片类型(爱情)']=df['是否爱情片'].map(name_to_type);
 df.head()

 

准备好的部分数据如图所示:  


  • 步骤二:编写代码实现多元线性回归。代码如下:

# 拆分训练集和测试集
 
x_train, x_test,y_train, y_test=train_test_split(df[['影片类型(爱情)','放映周期','日均票房/']],df[['评分']],train_size=0.8, test_size=0.2)
 
 
# 建立线性回归模型
 
regr = linear_model.LinearRegression()
 
# 数据拟合
 
regr.fit(x_train, y_train)
 
 
# 系数、截距
 
print('系数:',regr.coef_)
 
print('截距:',regr.intercept_)
 
 
# 给出re预测的一个特征
 
y_pred = regr.predict(x_test)
 
 
plt.plot(range(len(y_pred)),y_pred,'red', linewidth=2.5,label=u"预测值",linestyle='--')
 
plt.plot(range(len(y_test)),y_test,'green',label=u"测试值")
 
plt.legend(loc=2)
plt.ylabel('评分')
 
# 显示预测值与测试值曲线
 
plt.show()
  • 步骤三:运行代码,结果显示如下所示。 

 

系数: [[-1.93644687e+00  -1.29725765e-02 4.03645528e-04]]

 

截距: [6.50362603]

 


   多元线性回归操作实现讲解详见以下视频:


进阶:sklearn库中数据预处理方法LabelEncoder实现标签映射

sklearn.preprocessing.LabelEncoder()即标准化标签,将标签统一转换成range(标签个数-1)范围内。简单来说,LabelEncoder是对不连续的数字或者文本进行编号。那么上述映射的复杂代码,可以简化。LabelEncoder标记编码转换的使用代码如下: 

 

from sklearnimport preprocessing
 
 
# 对电影类别进行数值化处理
 
le = preprocessing.LabelEncoder()
 new_df[
'影片类型(爱情)'] =  le.fit_transform(new_df['是否爱情片'])

 

    转换后的电影类型编码数据(已框出)如下图所示。                             

       数据预处理中的标签映射操作讲解详见以下视频: