大数据分析技术

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

目录

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

什么是随机森林

传统的分类的机器学习算法有很多,比如决策树、支持向量机等。这些算法都是单个分类器,他们有性能提升的瓶颈以及过拟合的问题;因此,集成多个分类器来提高预测性能的方法应运而生,这就是集成学习算法(Ensemble Learning)。

集成学习是将多个模型进行组合来解决单一的预测问题。它的原理是生成多个分类器模型,各自独立地学习并做出预测。这些预测最后结合起来得到预测结果,因此和单独分类器的结果相比,结果一样或更好。

Bagging(并行)和Boosting(串行)是两种常见的集成学习方法,这两者的区别在于集成的方式是并行还是串行。随机森林算法(Random Forests)是并行集成方法里最具有代表性的一个算法。

一般而言,决策树的建树最常见的是自下而上的方式。一个给定的数据集被分裂特征分成左和右子集,然后通过一个评价标准来选择使平均不确定性降低最高的分裂方式,将数据集相应地划分为两个子节点,并通过使该节点成为两个新创建的子节点的父节点来建树。整个建树过程是递归迭代进行的,直到达到停止条件。例如,达到最大树深度或最小叶尺寸。

随机森林是基于决策树的一种集成学习算法。决策树是广泛应用的一种树状分类器,在树的每个节点通过选择最优的分裂特征不停地进行分类,直到达到建树的停止条件,比如叶节点里的数据都是同一个类别的。当输入待分类样本时,决策树确定一条由根节点到叶节点的唯一路径,该路径叶节点的类别就是待分类样本的所属类别。决策树是一种简单且快速的非参数分类方法,一般情况下,它有很好的准确率,然而当数据复杂时,决策树有性能提升的瓶颈。随机森林是2001年由LeoBreiman将并行集成学习理论与随机子空间方法相结合,提出的一种机器学习算法。随机森林是以决策树为基分类器的一个集成学习模型,它包含多个由并行集成学习技术训练得到的决策树,当输入待分类的样本时,最终的分类结果由单个决策树的输出结果投票决定。随机森林解决了决策树性能瓶颈的问题,对噪声和异常值有较好的容忍性,对高维数据分类问题具有良好的可扩展性和并行性。此外,随机森林是由数据驱动的一种非参数分类方法,只需通过对给定样本的学习训练分类规则,并不需要先验知识。

随机森林最好的用例之一是特征选择。尝试很多决策树变种的一个副产品就是你可以检测每棵树中哪个变量最合适/最糟糕。

随机森林也很善于分类。它可以被用于为多个可能目标类别做预测,它也可以被校正输出概率。你需要注意的一件事情是过拟合。随机森林容易产生过拟合,特别是在数据集相对小的时候。当你的模型对于测试集合做出“太好”的预测的时候就应该怀疑一下了。产生过拟合的一个原因是在模型中只使用相关特征。然而只使用相关特征并不总是事先准备好的,使用特征选择(就像前面提到的)可以使其更简单。

随机森林也可以用于回归。因此,在scikit-learn中,随机森林算法既有应用于分类的随机森林分类(RandomForestClassifier),又有可以用于回归问题的随机森林回归(RandomForestRegressor)。

任务2:下面以鸢尾花分类为例,说明RandomForestClassifier的使用。

随机森林对应的部分代码如下:

 from sklearn.ensemble  import RandomForestClassifier

 
 
#随机森林分类预测
 
clf = RandomForestClassifier(n_jobs=3)
 
clf.fit(x_train,  y_train[['Cluster']].values.ravel())
 y_
pred=clf.predict(x_test)
 
 
print("预测准确度:{:.2f}".format(clf.score(x_test,y_test[['Cluster']])))
 
print(pd.crosstab(y_test['Cluster'],  y_pred, rownames=['Actual  Values'], colnames=['Prediction']))

模型评估结果报告如图所示,你预测准确度为0.95。