【Python算法】分类与预测——Python随机森林

1.随机森林定义

随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务。同时,它也是一种数据降维手段,在处理缺失值、异常值以及其他数据探索等方面,取得了不错的成效。另外,它还担任了集成学习中的重要方法,在将几个低效模型整合为一个高效模型时大显身手。在随机森林中,会生成很多的决策树,当在基于某些属性对一个新的对象进行分类判别时,随机森林中的每一棵树都会给出自己的分类选择,并由此进行“投票”,森林整体的输出结果将会是票数最多的分类选项;而在回归问题中,随机森林的输出将会是所有决策树输出的平均值。

2.随机森林的优缺点

该算法的优点主要有以下几个方面:

随机森林算法能解决分类与回归两种类型的问题,并在这两个方面都有相当好的估计表现;

随机森林对于高维数据集的处理能力令人兴奋,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出变量的重要性程度,这是一个非常便利的功能;在对缺失数据进行估计时,随机森林是一个十分有效的方法。就算存在大量的数据缺失,随机森林也能较好地保持精确性;

当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;

模型的上述性能可以被扩展运用到未标记的数据集中,用于引导无监督聚类、数据透视和异常检测;

随机森林算法中包含了对输入数据的重复自抽样过程,即所谓的bootstrap抽样。

这样一来,数据集中大约三分之一将没有用于模型的训练而是用于测试,这样的数据被称为out of bag samples,通过这些样本估计的误差被称为out of bag error。研究表明,这种out of bag方法的与测试集规模同训练集一致的估计方法有着相同的精确程度,因此在随机森林中我们无需再对测试集进行另外的设置。

该算法的缺点主要有以下几个方面:

(1)随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。

(2)当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。

(3)对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子—几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。

3.随机森林执行步骤

在随机森林中,每一个决策树“种植”和“生长”的规则如下所示:

(1) 假设训练集中的样本个数为N,然后通过有重置的重复多次抽样来获得这N个样 本,这样的抽样结果将作为生成决策树的训练集;

(2) 如果有M个输入变量,每个节点都将随机选择m(m

(3) 每棵决策树都最大可能地进行生长而不进行剪枝;

(4) 通过对所有的决策树进行加总来预测新的数据(在分类时采用多数投票,在回归时 采用平均)。

4.操作系统

操作机:Linux_Ubuntu

操作机默认用户:root

5.实验工具

Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。Python已经成为最受欢迎的程序设计语言之一。自从2004年以后,python的使用率呈线性增长。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。

由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。

众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如如下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。

6.Numpy

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。

NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

7.scikit-learn

scikit-learn,Python 中的机器学习,简单高效的数据挖掘和数据分析工具,可供大家使用,可在各种环境中重复使用,建立在 NumPy,SciPy 和 matplotlib 上开放源码,可商业使用 - BSD license。

8.Matplotlib

Matplotlib 是一个 Python 的 2D绘**,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

9.pandas

Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

10.导入所需要的库:numpy,matplotlib.pyplot,pandas

代码如下:# Importing the libraries

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

11.加载数据集

代码如下:# Importing the dataset

dataset = pd.read_csv('/mnt/dataset_29/Social_Network_Ads_82e4aa0627105a2d22b70d7ad0bfeda0.csv')   注意:数据集以实际位置为准

X = dataset.iloc[:, [2, 3]].values

y = dataset.iloc[:, 4].values

注意:实验中以数据集的具体为准。

如下给出数据,可将数据创建响相应的数据集用于字日常训练,也可在实验平台中数据集模块下的的“社交网络数据集”中进行查看。

数据集如下:(见附件)

12.将数据集分割为训练集和测试集

代码如下:# Splitting the dataset into the Training set and Test set

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

13.特征缩放

代码如下:# Feature Scaling

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.transform(X_test)

14.调试训练集的随机森林

代码如下:from sklearn.ensemble import RandomForestClassifier

classifier = RandomForestClassifier(n_estimators = 10, criterion = 'entropy', random_state = 0)

classifier.fit(X_train, y_train)

15.对测试集进行分类

代码如下:# Predicting the Test set results

y_pred = classifier.predict(X_test)

16.制作混淆矩阵来评估模型性能

代码如下:# Making the Confusion Matrix

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

17.绘制训练数据分类结果

代码如下:# Visualising the Training set results

from matplotlib.colors import ListedColormap

X_set, y_set = X_train, y_train

X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),

np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),

alpha = 0.75, cmap = ListedColormap(('red', 'green')))

plt.xlim(X1.min(), X1.max())

plt.ylim(X2.min(), X2.max())

for i, j in enumerate(np.unique(y_set)):

plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],

c = ListedColormap(('orange', 'blue'))(i), label = j)

plt.title('Classifier (Training set)')

plt.xlabel('Age')

plt.ylabel('Estimated Salary')

plt.legend()

plt.show()

训练数据分类结果如下:

18.绘制测试数据分类结果

代码如下:# Visualising the Test set results

from matplotlib.colors import ListedColormap

X_set, y_set = X_test, y_test

X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),

np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),

alpha = 0.75, cmap = ListedColormap(('red', 'green')))

plt.xlim(X1.min(), X1.max())

plt.ylim(X2.min(), X2.max())

for i, j in enumerate(np.unique(y_set)):

plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],

c = ListedColormap(('orange', 'blue'))(i), label = j)

plt.title('Classifier (Test set)')

plt.xlabel('Age')

plt.ylabel('Estimated Salary')

plt.legend()

plt.show()

python与算法社区_【Python算法】分类与预测——Python随机森林相关推荐

  1. 【RF分类】基于matlab随机森林算法数据分类【含Matlab源码 2048期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[RF分类]基于matlab随机森林算法数据分类[含Matlab源码 2048期] 获取代码方式2: 付费专栏Matlab智能算法神经网络 ...

  2. ML之回归预测:利用十类机器学习算法(线性回归、kNN、SVM、决策树、随机森林、极端随机树、SGD、提升树、LightGBM、XGBoost)对波士顿数据集回归预测(模型评估、推理并导到csv)

    ML之回归预测:利用十类机器学习算法(线性回归.kNN.SVM.决策树.随机森林.极端随机树.SGD.提升树.LightGBM.XGBoost)对波士顿数据集[13+1,506]回归预测(模型评估.推 ...

  3. 【华为云技术分享】【Python算法】分类与预测——Python随机森林

    1.随机森林定义 随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务.同时,它也是一种数据降维手段,在处理缺失值.异常值以及其他数据探索等方面,取得了不错的成效.另外,它还担任了集成学习中的 ...

  4. python以图搜图_以图搜图(一):Python实现dHash算法(转)

    近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...

  5. python迭代算法含义_迭代算法原理及其Python编程实现

    黄旭 摘 要:迭代算法是数学算法在计算机中应用的一个热点,也是计算机解决问题的一般思路,本文结合数学中二分法求根的原理,阐述了数学迭代算法的一般原理,并采用了Python加以实现,为进一步对数学算法理 ...

  6. python游走代码_介绍一个全局最优化的方法:随机游走算法(Random Walk)

    1. 关于全局最优化求解 全局最优化是一个非常复杂的问题,目前还没有一个通用的办法可以对任意复杂函数求解全局最优值.上一篇文章讲解了一个求解局部极小值的方法--梯度下降法.这种方法对于求解精度不高的情 ...

  7. python贪心算法最短路径_贪心算法---最短路径问题

    一,贪心算法的设计思想 • 从问题的某一个初始解出发逐步逼近给定的目标,每一步都作一个不可回溯的决策,尽可能地求得最好的解.当达到某算法中的某一步不需要再继续前进时,算法停止. 二,贪心算法的基本性质 ...

  8. 正确率能很好的评估分类算法吗_机器学习算法:分类知识超全总结!

    关注上方"Python数据科学",选择星标,关键时间,第一时间送达! ☞500g+超全学习资源免费领取  Datawhale,译者:张峰本文将介绍机器学习算法中非常重要的知识-分类 ...

  9. python决策树怎么选择_机器学习|决策树分类与python实现

    目录: 1.决策树简介 2.决策树生成 a) 选择标准--熵 b) 信息增益--ID3算法 c) 信息增益率--C4.5算法 d) Gini系数--CART算法 e) 评价标准--评价函数 3.剪枝操 ...

最新文章

  1. 地铁线路辅助绘图设计---不做简单的画图师
  2. 深入浅出SharePoint2013——获取Application Pool的id和name对照表
  3. 如何在Windows上设置BitLocker加密
  4. 乘法口诀表编程php视频,PHP学习之制作乘法口诀表
  5. maple里面怎么搜索_怎么挖掘精准关键词进行引流?
  6. golang切片类型
  7. 台电t30_数码:台电发布T30平板电脑,10.1英寸/p70处理器/4+64GB内存组合
  8. python3.7怎么用_Python 3.7.0 来了!
  9. 微软官方 Windows 10 更新安装失败的解决办法
  10. ARCore学习——软件准备及网站
  11. sql计算表中计算机的最高分,关于SQL查询面试题,会这些基本够用了
  12. python实现离散点图画法
  13. p2p打洞stun的原理
  14. DB 查询分析器 方便地创建DB2自定义函数
  15. 《互联网信贷风险与大数据》读书笔记(二)
  16. 深度学习之昆虫种类识别
  17. 币圈指数哪家强?且看分析OK VS 火币
  18. 跟踪算法(一)光流法跟踪
  19. css设置MP4背景图片
  20. 如何有效进行配置三库管理(配置管理)?

热门文章

  1. ATA iSpec 2300:第一章 简介
  2. 定位决定地位---职业程序员未必就是代码民工
  3. 游戏大数据分析--游戏玩家
  4. css如何让height:100%起作用?
  5. 三、Maven私服nexus3服务器搭建
  6. 深蓝-视觉slam-第四讲学习笔记
  7. 罗马音平假名中文可复制_西方音乐史---古希腊、古罗马笔记
  8. 网络起源--计算机网络
  9. 极限编程(XP):概念、特点和应用
  10. 光电效应在计算机中应用,光电效应及其应用作者:杨海威110601147计算机科学与.doc...