随机森林(RF)

2023-11-11

目录

RF概念

RF算法流程

RF算法的优缺点

RF算法使用实现

RF应用

RF概念

随机森林指的是利用多棵树对样本进行训练并预测的一种分类器 决策树的详解见链接决策树---ID3算法、C4.5算法、CART算法_xiaoming1999的博客-CSDN博客

RF = 决策树+bagging+随机属性选择

RF算法流程

  1. 样本的随机:从样本集中用bagging的方式,随机选择n个样本。
  2. 特征的随机:从所有属性d中随机选择k个属性(k<d),然后从k个属性中选择最佳分割属性作为节点建立CART决策树。
  3. 重复以上两个步骤m次,建立m棵CART决策树。
  4. 这m棵CART决策树形成随机森林,通过投票表决结果,决定数据属于哪一类。

RF算法的优缺点

优点:

  1. 不用做特征选择
  2. 它可以判断特征的重要程度
  3. 可以判断出不同特征之间的相互影响
  4. 对于不平衡的数据集来说,它可以平衡误差。
  5. 如果有很大一部分的特征遗失,仍可以维持准确度。

缺点:

  1. 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
  2. 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的

RF算法使用实现

from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline


#载入数据
data = np.genfromtxt("LR-testSet2.txt",delimiter=',')
x_data = data[:,:-1]
y_data = data[:,-1]

plt.scatter(x_data[:,0],x_data[:,1],c=y_data)
plt.show()

#划分数据
x_train,x_test,y_train,y_test = train_test_split(x_data,y_data,test_size = 0.5)

#画图函数
def plot(model):
    #获取数据值所在的范围
    x_min,x_max = x_data[:,0].min()-1,x_data[:,0].max()+1
    y_min,y_max = x_data[:,1].min()-1,x_data[:,1].max()+1
    
    #生成网格矩阵
    xx,yy = np.meshgrid(np.arange(x_min,x_max,0.02),
                       np.arange(y_min,y_max,0.02))
    
    z = model.predict(np.c_[xx.ravel(),yy.ravel()])
    z = z.reshape(xx.shape)
    
    #等高线图
    cs = plt.contourf(xx,yy,z)
    #画散点图
    plt.scatter(x_test[:,0],x_test[:,1],c=y_test)
    plt.show()
#只用决策树
dtree = tree.DecisionTreeClassifier()
dtree.fit(x_train,y_train)
plot(dtree)

#用随机森林
RF = RandomForestClassifier(n_estimators = 100)
RF.fit(x_train,y_train)
plot(RF)
RF.score(x_test,y_test)
dtree.score(x_test,y_test)

结果显示如下

决策树结果:                                              随机森林结果:

 在一般情况下随机森林一般准确性比较高一些,但也不排除其他情况,随机森林的结果可能很差。

RF应用

  1. 对离散值的分类
  2. 对连续值的回归
  3. 无监督学习聚类
  4. 异常点检测
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机森林(RF) 的相关文章

随机推荐

  • [AHK]新浪实时股票数据接口

    2022年1月 发现 新浪接口反馈 Kinsoku jikou desu 已有新的方法 如需获取实时股票价格 当前价格 涨停价 跌停价 等 请联系weixin sunwind1576157 AHK 腾讯实时股票数据接口 AHK 腾讯实时股票
  • GO语言常用标准库 fmt

    GO语言常用标准库 fmt 1 fmt fmt包实现了类似C语言printf和scanf的格式化I O 主要分为向外输出内容和获取输入内容两大部分 1 1 1 向外输出 标准库fmt提供了以下几种输出相关函数 Print Print系列函数
  • 1024Byte(字节)=1KB

    二进制数系统中 每个0或1就是一个位 bit 位是数据存储的最小单位 计算机中的CPU位数指的是CPU一次能处理的最大位数 例如32位计算机的CPU一次最多能处理32位数据 字节 Byte 是通过网络传输信息 或在硬盘或内存中存储信息 的单
  • 【转】本地jar 上传到maven仓库

    Maven环境准备 下载maven安装包 解压后配置好path环境变量 具体配置请参考百度 注意一般maven仓库有两个目录可以上传 maven snapshots 和 maven releases 一般快照 也就是jar的后缀名为snap
  • Python:安装paddlepaddle后运行代码报错ImportError: core_avx.so: undefined symbol: _dl_sym, version GLIBC_PRIVA

    是paddlepaddle版本导致的 出现问题时我安装的版本是 python m pip install paddlepaddle 2 3 1 i https pypi tuna tsinghua edu cn simple 改成下面这个版
  • Spring(做项目常用的网址)

    目录 1 后端maven中央仓库 2 jquery官网下载 3 mybatis文档中文版 4 mybatis英文文档 5 mybatis生成逆向工程代码及网址 6 Spring网址 附注常用到的代码 7 使用 Controller注解为什么
  • 【数据库原理复习题】

    文章目录 一 单选题 二 填空题 三 判断题 四 简答题 五 综合题 5 1 属性集合的闭包计算 5 2 确定候选码并进行范式级别的判断 5 2 1 确定候选码讲解 5 2 2 范式级别的判断讲解 5 3 根据要求写SQL语句 5 3 1数
  • canvas绘制小树阴影-transform

    绘制小路 可用quadraticCurveTo 二次贝塞尔曲线 来绘制复杂曲线 也可以用bezierCurveTo 三次贝塞尔曲线 效果图 代码如下 demo html
  • 深度学习环境配置8——(30系显卡)windows下的torch==1.7.1环境配置

    深度学习环境配置8 30系显卡 windows下的torch 1 7 1环境配置 注意事项 一 2021 10 8更新 学习前言 各个版本pytorch的配置教程 环境内容 环境配置 一 Anaconda安装 1 Anaconda的下载 2
  • 计算机毕业设计Node.js+Vue会议管理系统(程序+源码+LW+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 Node js Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 Express框架 No
  • java socket tcp 长连接_java socket长连接

    package com paic umap tcp import java io IOException import java io InputStream import java io ObjectInputStream import
  • LeetCode 182. Duplicate Emails

    SQL Schema Write a SQL query to find all duplicate emails in a table named Person Id Email 1 a b com 2 c d com 3 a b com
  • Ubuntu 下配置protobuf

    首先得到 protobuf 相应的包文件 在终端上输入如下 wget http protobuf googlecode com files protobuf 2 5 0 tar gz 由于 现在 protobuf 2 5 0 tar gz已
  • Python Serial串口的简单数据收发

    导入模块 注意这里模块名是pyserial pip install pyserial 1 打开串口 import serial com serial Serial COM3 9600 print com 2 发送数据 import seri
  • unityhub登录不上,登录界面刷新不出来

    如果是登录界面白屏的话可以尝试 1 关闭hub 右下角也要退出 找不到的可以直接任务管理器退出 2 删除 UserProfile AppData Roaming 里面的 UnityHub Cache和 Unity Caches 文件夹 3
  • javascript的null、undefined和布尔数据类型

    javascript中 有null undefined 在使用typeof 时候 console log typeof null object console log typeof undefined undefined null与unde
  • C++ gbk与utf8互转

    本文代码已在vs2017上验证 gbk转utf8容易出现中文乱码 有的时候在x86 32位编译环境下中文显示正常 但切换到x64 64位编译环境下会乱码 本文所示的代码在32位和64位编译环境下均不会出现乱码 使用例子见 C 调用pytho
  • 在windows下使用Vscode用CMake..命令编译源代码时候遇到的问题之解决办法

    由于我在windows下用Vscode总是不记得如何deal这个错误 因此今天就用这篇博客记录下来 在windows的Vscode这个IDE下 打开终端 输入命令行 C Users 11602 Desktop test build gt c
  • 【互联网有记忆】爬取微博热搜榜并存入数据库(python爬虫+存储过程后端实现)

    一 爬虫代码 import random time import requests re import datetime import mysql connector 定义爬取间隔 minutes interval time 15 clas
  • 随机森林(RF)

    目录 RF概念 RF算法流程 RF算法的优缺点 RF算法使用实现 RF应用 RF概念 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器 决策树的详解见链接决策树 ID3算法 C4 5算法 CART算法 xiaoming1999的博客