大数据分析技术

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

目录

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

一元线性回归模型有一个主要的局限性:它只能把输入数据拟合成直线。而多项式回归模型通过拟合多项式方程来克服这个问题,从而提高模型的准确性。


任务2:根据放映天数,使用多项式回归分析预测电影日均票房。



  • 步骤一:应用多项式回归方法,并比较与线性回归的不同。撰写如下代码。

 

from sklearn.preprocessing import PolynomialFeatures
x = df[[
'放映天数']]
y = df[[
'日均票房/']]
 
# 初始化一元线性回归模型
 
regr = linear_model.LinearRegression()
 
# 一元线性回归模型拟合
 
regr.fit(x, y)
 
 
# 初始化多项式回归模型
 
polymodel = linear_model.LinearRegression()
poly =
PolynomialFeatures(degree = 3)
xt = poly.fit_transform(x)
 
# 多项式回归模型拟合
 
polymodel.fit(xt, y)
 
 
plt.title('放映天数与票房关系图(线性回归与多项式回归分析)')
 
plt.xlabel('放映天数')
 
plt.ylabel('日均票房收入\万元')
 
plt.scatter(x, y, color='black', label = "原始数据")
 
plt.scatter(x, regr.predict(x), color='red',linewidth=1,label="线性回归", marker = '*')
 
plt.scatter(x, polymodel.predict(xt), color='blue',linewidth=1,label="多项式回归", marker = '^')
 
plt.legend(loc=2)
 
plt.show()
  • 步骤二:运行程序,结果如图所示。                            




  • 步骤三:归一化与可视化进阶,展现结果如图所示。



可视化参考代码如下: 

 

plt.title('放映天数与票房关系图(线性回归与多项式回归分析)')
 
plt.xlabel('放映天数')
 
plt.ylabel('日均票房收入\万元')
 
 x_min = x.values.min() -
0.1
 
x_max = x.values.max() + 0.1
 
#定义一个一列的数组,最小值是x_min,最大值是x_max,步长是0.005
 
x_new = np.arange(x_min,x_max,0.005).reshape(-1, 1)
 xt_new = poly.fit_transform(x_new)
 
# 画出原数据
 
plt.scatter(x, y, color='black', label = "原始数据")
 
# 一元线性回归模型结果的可视化
 
plt.scatter(x_new, regr.predict(x_new), color='red', s=2,linewidth=1,label="线性回归")
 
# 多项式回归模型结果的可视化
 
plt.scatter(x_new, polymodel.predict(xt_new),s=2, color='blue',linewidth=1,label="多项式回归")
 
# 在左上角显示图例
 
plt.legend(loc=2)
 
plt.show()

 



思考进阶(一):修改degree的取值,分析其变化,并说明参数degree的作用。

    不同degree的预测结果示例如下图所示。



其中一个子图的代码如下,以此类推。 

 

poly1 = PolynomialFeatures(degree = 1)
 xt1 = poly1.fit_transform(x)
 
polymodel1 = linear_model.LinearRegression()
 
polymodel1.fit(xt1, y)
 x_new = np.
arange(x_min,x_max,0.005).reshape(-1, 1)
 xt_new1 = poly1.fit_transform(x_new)
 fig =
plt.figure()
 degree1 = fig.add_subplot(
2,2,1)
 degree1.scatter(x, y,
color='black')
 degree1.scatter(x_new,
polymodel1.predict(xt_new1), s=2,  color='green',linewidth=1)
 degree1.set_title(
'degree = 1')
 
plt.show()

 

思考进阶(一):循环实现

可以使用循环,精简代码展现四个子图。参考代码如下:

 

fig = plt.figure()
 
for i in range(4):
     poly =
PolynomialFeatures(degree = i+1)
     xt = poly.fit_transform(x)
    
polymodel = linear_model.LinearRegression()
    
polymodel.fit(xt, y)
     x_new = np.
arange(x_min,x_max,0.005).reshape(-1, 1)
     xt_new = poly.fit_transform(x_new)
     degree = fig.add_subplot(
2, 2, i+1)
     degree.scatter(x, y,
color='black')
     degree.scatter(x_new,
polymodel.predict(xt_new), s=1, color='blue',linewidth=1)
     degree.set_title(
'degree = ' + str(i+1))
 
plt.show()

 


 degree的作用讲解及实现详见以下视频: