大数据分析技术

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

目录

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

人脸检测指在静态或动态的场景、复杂的背景中判断是否存在面像,并分离出这种面像

任务1.1:在提供的people.jpg图像中,使用OpenCV识别人脸,并用矩形框进行标注。

准备好图像,撰写代码,参考如下:

 

import numpyas np
 
import cv2 as cv

 

# 加载人脸特征识别器
 face_cascade = cv.
CascadeClassifier('cascade_files/haarcascade_frontalface_alt.xml')

 

# 加载目标图像
 
img = cv.imread('people.jpg')

 

# 将图像转化为灰度图
 gray = cv.
cvtColor(img, cv.COLOR_BGR2GRAY)
 
# 人脸检测
 faces = face_cascade.
detectMultiScale(gray, 1.3, 5)
 
for (x,y,w,h) in faces:

 

# 画出人脸的矩形框(蓝色)
     cv.rectangle(
img,(x,y),(x+w,y+h),(255,0,0),2)
 cv.
imshow('img',img)
 cv.
waitKey(0)
 cv.
destroyAllWindows()

 

“people.jpg”中有三张人脸,运行结果如图所示。

                             

需要注意的是:import cv2中的“2”并不表示OpenCV的版本号。OpenCV是基于C/C++的,“cv”和“cv2”表示的是底层C API和C++ API的区别,“cv2”表示使用的是C++ API。

另外,人脸检测的核心方法调用说明如下:

 

void detectMultiScale(

 

const Mat& image, CV_OUT vector<Rect>& objects, double scaleFactor  = 1.1,  

 

int minNeighbors = 3,  int  flags  = 0,  Size minSize = Size(), Size maxSize  = Size()

 

);

 

其中,参数image用来指定需要检测的图像。参数scaleFactor表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1,表示每次搜索窗口依次扩大10%。参数minNeighbors表示构成检测目标的相邻矩形的最小个数(默认为3个)。

任务1.2:假设还想在人脸中检测出鼻子,并进行标注。

    参考代码如下:

 

import numpyas  np
 
import cv2 as cv

 

# 加载人脸检测器
 face_cascade = cv.
CascadeClassifier('cascade_files/haarcascade_frontalface_alt.xml')

 

# 初始化鼻子检测模型
 nose_cascade = cv.
CascadeClassifier('cascade_files/haarcascade_mcs_nose.xml')
 
img = cv.imread('people.jpg')
 gray = cv.
cvtColor(img,  cv.COLOR_BGR2GRAY)
 
# 人脸检测
 faces = face_cascade.
detectMultiScale(gray,  1.3,  5)
 
for (x,y,w,h) in faces:

 

# 画出人脸的矩形框(蓝色)
     cv.rectangle(
img,(x,y),(x+w,y+h),(255,0,0),2)
     roi_gray = gray[y:y+h, x:x+w]
     roi_color =
img[y:y+h, x:x+w]

 

# 鼻子检测
     noses = nose_cascade.
detectMultiScale(roi_gray,1.3,5)
    
for (ex,ey,ew,eh)  in noses:

 

# 画出鼻子的矩形框(绿色)
          cv.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(
0,255,0),2)
        
break
 
 
cv.imshow('img',img)
 cv.
waitKey(0)
 cv.
destroyAllWindows()

 

运行结果如图所示。