sklearn 随机森林(Random Forest)多分类问题

2023-10-28

模型

随机森林是集成学习算法的一种。sklearn更多的集成学习算法
RandomForestClassifier 参数详解
重要的参数有基分类器的个数(n_estimators)、特征选择算法(critirion)、单个决策树的最大深度(max_depth)等。

预处理

import pandas as pd
path = "../Data/classify.csv"
rawdata = pd.read_csv(path) 
X = rawdata.iloc[:,:13]
Y = rawdata.iloc[:,14]  # {”A":0,"B":1,"C":2}
Y = pd.Categorical(Y).codes  # ABC变成123

建模

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators = 10, criterion="gini")

训练+评价

def rf_model(k):
    return RandomForestClassifier(n_estimators = k, criterion="gini")

def svc_model(model):
    model.fit(x_train, y_train)
    acu_train = model.score(x_train, y_train)
    acu_test = model.score(x_test, y_test)
    y_pred = model.predict(x_test)
    recall = recall_score(y_test, y_pred, average="macro")
    return acu_train, acu_test, recall
    
def run_rf(kmax):
    result = {
              "k":[],
              "acu_train": [],
              "acu_test": [],
              "recall": []
              }
    for i in range(1,kmax+1):
        acu_train, acu_test, recall = svc_model(rf_model(i))
        result["k"].append(i)
        result["acu_train"].append(acu_train)
        result["acu_test"].append(acu_test)
        result["recall"].append(recall)
    return pd.DataFrame(result)

df = run_rf(20)
df["acu_test"].plot()
plt.xlim(1,100)
plt.ylim(0.5,0.9)
plt.show()

结果

在这里插入图片描述
分类准确率大概在0.85左右,后面即使增加树的个数,也没法再提高准确率了。

预剪枝对随机森林的优化

def rf_model(k):
    return RandomForestClassifier(n_estimators = k, criterion="gini", max_depth=5)

在模型中增加了max_depth=5

结果

在这里插入图片描述
可见预剪枝对决策树是有效的(基分类器数量=1),但是随机森林模型已经通过随机选取样本、随机选择特征等方式有效避免了过拟合、陷入局部最优等问题,因此对单个树进行预剪枝,对模型的提升效果不大。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn 随机森林(Random Forest)多分类问题 的相关文章

随机推荐

  • 利用SCCM进行横向移动

    01SCCM介绍 SCCM全名为System Center Configuration Manager 从版本1910开始 微软官方将其从Microsoft System Center产品移除 重新命名为Microsoft Endpoint
  • 9种基本数据类型

    9种基本数据类型以及封装类 基本类型 大小 默认值 封装类 byte 1 byte 0 Byte short 2 short 0 Short int 4 0 Int Long 8 0L Long float 4 0 0f Float dou
  • 跳过交货单ATP CHECK的方法

    物料启用ATP CHECK会影响到交货 对于那些启用了ATP CHECK而又没有做合理规划的系统 想要搞清楚ATP是如何计算的 我只能说呵呵 你会发现批次拆分 过账的BAPI会有莫名其妙的 报错 搞不清楚库存里明明有东西为什么还不让交货 这
  • 【深度学习】数据集打标签:生成train.txt和val.txt

    当我们在Github上下载一篇论文的代码后 我们如何在自己的数据集上进行复现呢 准备自己的数据集 这是在百度爬的十分类的服装数据集 其中train文件夹下每类大概300张 val文件夹下每类大概100张 总共在4000张左右 设置目录 我们
  • mysql二进制文件下载教程_mysql 二进制文件增量备份

    1 首先在my cnf下添加二进制文件路径 windows下文件名称为my ini 在 mysqld 下添加 log bin mysql bin 2 centos下默认安装mysql 5 6 数据默认文件夹下为 var lib mysql
  • (新手向)在matlab中运用SMOTE和前馈神经网络对wilt(枯萎)数据集进行机器学习

    目录 一 概述 二 数据集描述 三 方法 数据预处理 SMOTE算法 Feed forward网络 四 结果 后记 2021年5月 一 概述 近日 有位同学因为搞不懂matlab中的神经网络来问我怎么做 我说你把数据集发来给我看看 我稍微一
  • apt安装包报错解决办法:下列软件包有未满足的依赖关系,依赖。。。但是。。。正要被安装

    apt安装包报错解决办法 下列软件包有未满足的依赖关系 依赖 但是 正要被安装 文章目录 apt安装包报错解决办法 下列软件包有未满足的依赖关系 依赖 但是 正要被安装 几种可能的情况 1 镜像源版本代码的问题 1 查看版本代码 2 修改镜
  • Redis设计与实现---Sentinel

    Sentinel Redis的高可用性解决方案 由一个或多个Sentinel实例组成的系统可以监视任意多个主服务器 以及这些主服务器属下的所有从服务器 并在被监视的主服务器进入下线状态时 自动将下线主服务器属下的某个从服务器升级为新的主服务
  • 考研复试数据库原理课后习题(十)——数据库恢复技术

    数据库恢复技术 1 事务是用户定义的一个数据库操作序列 这些操作要么全做 要么不做 是一个不可分隔的工作单位 事务具有四个特性 ACID 原子性 一致性 隔离性 持续性 原子性 事务是数据库的逻辑工作单位 一个事务中包括的操作要么全做 要么
  • Swagger的常用配置

    一 可在项目中创建SwaggerConfig配置类 对文档详细信息进行配置 swagger配置类 用于配置swagger的详细信息 比如标题 网站 邮箱 Configuration public class SwaggerConfig 返回
  • linux 大量的TIME_WAIT解决办法

    原文地址 http www cnblogs com softidea p 6062147 html 统计在一台前端机上高峰时间TCP连接的情况 统计命令 netstat n awk tcp S NF END for a in S print
  • 计算机科学想象作文500,六年级想象作文600字

    第一篇 描写月亮的作文 你们听说过 超级月亮 吗 什么 没听说过 那么 我就带你们去看看前几天的超级月亮吧 今天 我像往常一样去广场滑滑板 忽然 我看一栋楼房的左 作文500字 未来的城市一场暴雨过后 阳光洒在充满绿意的城市 街道上没有积水
  • 09_Pandas从多个条件(AND,OR,NOT)中提取行

    09 Pandas从多个条件 AND OR NOT 中提取行 使用Pandas从多个条件 AND OR NOT 中提取行的方法 有以下2点需要注意 的使用 and or not的错误 使用比较运算符时 请将每个条件括在括号中 以下数据为例
  • 驱动名、设备名和设备文件名的关系

    编写一个驱动文件的时候生成一个name1 ko文件 这个name1就是驱动名 使用insmod name1 ko指令之后 用lsmod能看见一个名为name1的驱动 在调用了alloc chrdev region函数或register ch
  • 满分回答教你如何应对面试中项目经验这一难关

    给前端瓶子君加星标 提升前端技能 作者 亦逊 https juejin im post 5e7aed9c6fb9a07cac1d872d 前言 本篇文章的作者是来自阿里淘系用户增长前端团队的 亦逊 18年作为双非本科生通过层层面试 校招进入
  • CSS下划线与文字间距,下划线粗细以及下划线颜色的设置

    最开始的时候了解下划线的属性是 text decoration underline 1 但是 很遗憾的是 对于设计做的下划线用浏览器默认属性样式很难调整 使用这个属性并不能调整下划线与文字的间距 而且对于下划线的颜色也不好调整 而使用 u
  • 2014年仍然是DX11设备仿真和软引擎年

    先说点题外话 2014年1月比较浮躁 2月过年 回家后 与亲戚家的同龄人一比较 发现自己很废 不知道他们是不是在吹牛 想急功近利挣点钱 所以一度想进行OSG或者COCOS2DX 诚然 以后会进行这样的一种或两种 但是 今年不是时候 因为水平
  • MFC之创建插入符,写字,换行与退格11

    概述 我们按照前面文章根据向导创建项目 1 创建插入符 由于插入符是在创建窗口后并且做我们用户操作前需要使用 所以我们将插入符的创建放在OnCreate函数中即WM CRATE信号 int CInsertFuView OnCreate LP
  • reacthook的ref循环多个子组件

    父组件 ref值挂在这里 父子和兄弟都可以使用 const bodyRefs useRef
  • sklearn 随机森林(Random Forest)多分类问题

    模型 随机森林是集成学习算法的一种 sklearn更多的集成学习算法 RandomForestClassifier 参数详解 重要的参数有基分类器的个数 n estimators 特征选择算法 critirion 单个决策树的最大深度 ma