Machine Learning | 机器学习简介

Machine Learning | (1) Scikit-learn与特征工程

Machine Learning | (2) sklearn数据集与机器学习组成

Machine Learning | (3) Scikit-learn的分类器算法-k-近邻

Machine Learning | (4) Scikit-learn的分类器算法-逻辑回归

Machine Learning | (5) Scikit-learn的分类器算法-朴素贝叶斯

Machine Learning | (6) Scikit-learn的分类器算法-性能评估

Machine Learning | (7) Scikit-learn的分类器算法-决策树(Decision Tree)

Machine Learning | (8) Scikit-learn的分类器算法-随机森林(Random Forest)


随机森林(Random Forest)

在机器学习中,随机森林(Random Forest)是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。利用相同的训练数搭建多个独立的分类模型,然后通过投票的方式,以少数服从多数的原则作出最终的分类决策。例如, 如果你训练了5个树, 其中有4个树的结果是True, 1个数的结果是False, 那么最终结果会是True.

在前面的决策当中我们提到,一个标准的决策树会根据每维特征对预测结果的影响程度进行排序,进而决定不同的特征从上至下构建分裂节点的顺序,如此以来,所有在随机森林中的决策树都会受这一策略影响而构建的完全一致,从而丧失的多样性。所以在随机森林分类器的构建过程中,每一棵决策树都会放弃这一固定的排序算法,转而随机选取特征。

学习算法

根据下列算法而建造每棵树:

  • 用N来表示训练用例(样本)的个数,M表示特征数目。
  • 输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。
  • 从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。
  • 对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。

sklearn.ensemble,集成方法模块

sklearn.ensemble提供了准确性更加好的集成方法,里面包含了主要的RandomForestClassifier(随机森林)方法。

class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None)""":param n_estimators:integer,optional(default = 10) 森林里的树木数量。:param criteria:string,可选(default =“gini”)分割特征的测量方法:param max_depth:integer或None,可选(默认=无)树的最大深度:param bootstrap:boolean,optional(default = True)是否在构建树时使用自举样本。"""

属性

  • classes_:shape = [n_classes]的数组或这样的数组的列表,类标签(单输出问题)或类标签数组列表(多输出问题)。
  • featureimportances:array = [n_features]的数组, 特征重要性(越高,功能越重要)。

方法

  • fit(X,y [,sample_weight]) 从训练集(X,Y)构建一棵树林。

  • predict(X) 预测X的类

  • score(X,y [,sample_weight]) 返回给定测试数据和标签的平均精度。

  • decision_path(X) 返回森林中的决策路径


泰坦尼克号乘客数据案例

这里我们通过决策树和随机森林对这个数据进行一个分类,判断乘客的生还。


import pandas as pd
import sklearn
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifiertitanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')#选取一些特征作为我们划分的依据
x = titanic[['pclass', 'age', 'sex']]
y = titanic['survived']# 填充缺失值
x['age'].fillna(x['age'].mean(), inplace=True)x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)dt = DictVectorizer(sparse=False)print(x_train.to_dict(orient="record"))# 按行,样本名字为键,列名也为键,[{"1":1,"2":2,"3":3}]
x_train = dt.fit_transform(x_train.to_dict(orient="record"))x_test = dt.fit_transform(x_test.to_dict(orient="record"))# 使用决策树
dtc = DecisionTreeClassifier()dtc.fit(x_train, y_train)dt_predict = dtc.predict(x_test)print(dtc.score(x_test, y_test))print(classification_report(y_test, dt_predict, target_names=["died", "survived"]))# 使用随机森林rfc = RandomForestClassifier()rfc.fit(x_train, y_train)rfc_y_predict = rfc.predict(x_test)print(rfc.score(x_test, y_test))print(classification_report(y_test, rfc_y_predict, target_names=["died", "survived"]))

Machine Learning | (8) Scikit-learn的分类器算法-随机森林(Random Forest)相关推荐

  1. 初勘数据处理之预测算法(随机森林random forest)附matlab源码

    初勘数据处理之预测算法(随机森林random forest)附matlab源码 集成学习方法 集成学习方法,是整合多个分类方法的预测结果,以提高分类准确率.集成学习方法先用训练数据构建一组基分类器,再 ...

  2. Hands On Machine Learning with Scikit Learn and TensorFlow(第三章)

    MNIST 从sklearn自带函数中导入NMIST 第一次导入可能会出错,从这里下载https://github.com/amplab/datascience-sp14/blob/master/la ...

  3. Hands On Machine Learning with Scikit Learn and TensorFlow(第十章)

    Oscar帮助你寻找好的超参数组合. 每个隐藏层神经元的数量应该是逐渐减少的,因为第一层学到的低阶特征,可以在第二层组合成高阶特征 .

  4. R语言分类算法之随机森林(Random Forest)

    1.原理分析: 随机森林是通过自助法(boot-strap)重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练集样本集合,然后根据自助样本集生成k个决策树组成的随机森林,新数据的 ...

  5. 集成算法-随机森林与案例实战-泰坦尼克获救预测

    集成算法-随机森林 Ensemble learning 目的:让机器学习效果更好,单个不行,群殴走起 Bagging:训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ...

  6. 机器学习算法-随机森林之理论概述

    前面我们用 3 条推文从理论和代码角度讲述了决策树的概念和粗暴生成. 机器学习算法-随机森林之决策树R 代码从头暴力实现(3) 机器学习算法-随机森林之决策树R 代码从头暴力实现(2) 机器学习算法 ...

  7. 机器学习算法-随机森林初探(1)

    机器学习算法-随机森林之理论概述 表达数据集来源于 https://file.biolab.si/biolab/supp/bi-cancer/projections/. 为了展示随机森林的能力,我们用 ...

  8. 机器学习算法-随机森林之决策树R 代码从头暴力实现(3)

    前文 (机器学习算法 - 随机森林之决策树初探(1)) 讲述了决策树的基本概念.决策评价标准并手算了单个变量.单个分组的Gini impurity.是一个基本概念学习的过程,如果不了解,建议先读一下再 ...

  9. 机器学习算法-随机森林之决策树R 代码从头暴力实现(2)

    前文(机器学习算法 - 随机森林之决策树初探(1))讲述了决策树的基本概念.决策评价标准并手算了单个变量.单个分组的Gini impurity.是一个基本概念学习的过程,如果不了解,建议先读一下再继续 ...

最新文章

  1. 20155117 王震宇 2006-2007-2 《Java程序设计》第三周学习总结
  2. php缩紧空格,使用php-cs-fixer修复PHP代码文件的缩进
  3. 计算机中减法英语,计算机中的减法运算
  4. httpclient base64 文件上传_代码级别的上传下载神器
  5. 90后过年,吃零下18度的年夜饭
  6. 5G:无人驾驶的“超级英雄”路
  7. 2015.12.21 内存管理(memory management)
  8. java 二分_java二分查找算法
  9. 思科认证CCNA专业英文词汇全集(4)
  10. 应用物理跨考计算机专业,应用物理学考研可跨专业
  11. 《LabVIEW FPGA开发宝典》第9章:利用树莓派Linux RT+FPGA PCIe实现国产化RIO
  12. 手机上有哪些不错的c语言编程软件?
  13. 2018年大数据趋势 :人工智能... 数据分析将包含可视化模型...
  14. Linux系统的上行和下行带宽的检测
  15. 西雅图大学计算机专业,本科计算机专业伊力诺依香槟分校,华盛顿西雅图大学,德州奥斯汀哪个好??...
  16. 产品思维训练 | 卖菜的店同时也卖水果,卖水果的店为什么不卖菜?
  17. android6自定义锁屏,Android自定义控件系列之:锁屏页
  18. uefi装完系统后无法引导_uefi装win7启动不了怎么解决?
  19. 安徒生---海的女儿
  20. 剑指 Offer第 11 天 双指针(简单)

热门文章

  1. 服务器安全设置之--硬盘权限篇
  2. 测试工程师工作流程概论
  3. React学习笔记4: React脚手架配置代理
  4. int(1) 和 int(10) 有什么区别?资深开发竟然都理解错了!
  5. 这才叫细:带你深入理解Redis分布式锁
  6. 阿里巴巴电商平台架构演变之路
  7. 你知道标志着团队已经敏捷化的8个信号吗?
  8. 还记得那场关于“分布式锁”的经典论战吗?
  9. 拆解交易系统--异地多活
  10. 领歌LeangooV6.5.3:支持评论编辑,看板动态跳转