大数据分析技术

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

目录

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

什么是DBSCAN

使用K-Means算法时,必须把类别数量K值作为输入参数。在真实世界中,很多时候我们事先并不知道这个具体值。可以搜索类别数量的参数空间,通过轮廓系数得分找到最优的类别数量,但这是一个非常耗时的过程。DBSCAN(Density-BasedSpatial Clustering of Applications with Noise,带噪声的基于密度的聚类方法)顺势而生。

DBSCAN是一个比较有代表性的基于密度的聚类算法。它将数据点看成是紧密集群的若干组。如果某个点属于一个集群,那么就应该有许多点也属于同一个集群。DBSCAN算法需要首先确定两个参数:

(1)epsilon:在一个样本点周围邻近区域的半径,即扫描半径;

(2)minPts:邻近区域内至少包含样本点的个数,即最小包含点数。

方法中epsilon参数可以控制这个点到其他点的最大距离。如果两个点的距离超过了参数epsilon的值,它们就不可能在一个集群中。这种方法的主要优点是它可以处理异常点。如果有一些点位于数据稀疏区域,DBSCAN就会把这些点作为异常点,而不会强制将它们放入一个集群中。对应地,样本点可以分为三种:

(1)核点(core point):在半径epsilon内含有超过minPts数目的点,则为核样本点;

(2)边缘点(border point):在半径epsilon内点的数目小于minPts,但是落在核心点的临域内,可由一些核点获得(density-reachable或者directly-reachable);

(3)离群Outlier):既不是核点也不是边缘点,则属于这一类。   

             

任务1:下面以观影评分数据为例说明方法的使用。数据文件中存储了两列数据,分别表示用户对两部电影的评分。根据评分值的相似性,我们对影用户进行分类,分成不同的客户群。使用DBSCAN方法确定具体分为几类。

  • 步骤一:从评分数据文件“filmScore.csv”中读入原始数据,并进行可视化。

#!/usr/bin/Python
# -*- coding: utf-8 -*-
#
导入
 
import pandas as pd
 
#读取数据并自动为其添加索引
 
data = pd.read_csv('filmScore.csv')
data.head()
 
#可视化原始数据
 
plt.scatter(data['filmname1'], data['filmname2'], c='black')
 
plt.show()

原始数据的可视化结果如图所示。




  • 步骤二:调用DBSCAN进行聚类分析,获得质心个数,参考代码如下:

 #引入机器学习相关的类

 from sklearn.cluster  import DBSCAN
 
# 调用DBSCAN()确定质心个数
 
y_pred =  DBSCAN().fit_predict(data)

  • 步骤三:对聚类预测结果进行可视化,参考代码如下:

 import matplotlib.pyplotas  plt

 from pylabimport  mpl
 
#设置字体为SimHei显示中文
 
mpl.rcParams['font.sans-serif']  = ['SimHei']
 
mpl.rcParams['axes.unicode_minus']  = False
 
#聚类结果的可视化
 
plt.scatter(d ata['filmname1'],  data['filmname2'], c=y_pred)
 
plt.colorbar()
 
plt.title(u'聚类分析结果(BDSCAN')
 
plt.show()

运行代码,结果如下图(a)所示。为区别不同类别,图(b)中用形状区分的方式做了分类结果的显示。

 

(a)颜色区分                      (b)形状区分


  • 步骤四:修改参数。方法对参数敏感,设置eps=1.3,min_samples=20,代码如下。

 # 调用DBSCAN()确定质心个数

 y_pred =  DBSCAN(eps=1.3, min_samples=20).fit_predict(data)

    运行结果如图所示。


  • 步骤五:可视化进阶。seaborn是一款非常方便的画图工具,安装seaborn后,使用代码实现可视化。代码如下:

 import seabornas sb

 # 调用DBSCAN()确定质心个数
 
dbscan=DBSCAN()
 
dbscan.fit(data)
 
#使用seaborn实现聚类结果的可视化
 data[
'dbscan_label']=dbscan.labels_
 g=sb.
FacetGrid(data,hue='dbscan_label')
 g.map(
plt.scatter,'filmname1','filmname2').add_legend()
 
plt.show()

    上述代码运行结果如图所示,其中“-1”表示异常类。