04-12 scikit-learn库之随机森林
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html
scikit-learn库之随机森林
本文主要介绍随机森林的两个模型RandomForestClassifier和RandomForestRegressor,这两个模型调参包括两部分,第一部分是Bagging框架,第二部分是CART决策树的参数。本文会详解介绍RandomForestClassifier模型,然后会对比着讲解RandomForestRegressor模型。
接下来将会讨论上述两者的区别,由于是从官方文档翻译而来,翻译会略有偏颇,有兴趣的也可以去scikit-learn官方文档查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble
一、RandomForestClassifier
1.1 使用场景
RandomForestClassfier模型主要解决分类问题,其他也没啥好说的。
1.2 代码
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=4,
n_informative=2, n_redundant=0, random_state=0, shuffle=False)
clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)
clf.fit(X, y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=2, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=None,
oob_score=False, random_state=0, verbose=0, warm_start=False)
print(clf.feature_importances_)
[0.14205973 0.76664038 0.0282433 0.06305659]
print(clf.predict([[0, 0, 0, 0]]))
[1]
1.3 参数
- n_estimators::弱学习器个数,int类型。弱学习的个数,也可以说是弱学习器的最大迭代次数。默认为10。
- criterion:特征选择,str类型。criterion='gini'表示基尼指数;criterion='entropy'表示信息增益,推荐使用'gini'。默认为'gini'。
- splitter:特征划分点选择,str类型。splitter='best'在特征的所有划分点中找出最优的划分点,适合小样本量;splitter='random'随机的在部分划分点中找到局部最优的划分点,适合大样本量。默认为'best'。
- max_depth:最大深度,int类型。如果样本特征数较少可以使用默认值,如果样本特征数较多一般用max_depty=10-100限制树的最大深度。默认为None。
- min_samples_split:内部节点划分需要最少样本数,float类型。限定子树继续划分的条件,如果某节点的样本数少于min_samples_split,则会停止继续划分子树。如果样本数量过大,建议增大该值,否则建议使用默认值。默认为2。
- min_samples_leaf:叶子节点最少样本数float类型。如果在某次划分叶子节点数目小于样本数,则会和兄弟节点一起剪枝。如果样本数量过大,建议增大该值,否则建议使用默认值。默认为1。
- min_weight_fraction_leaf:叶子节点最小的样本权重和,float类型。该参数限制了叶子节点所有样本权重和的最小值,如果小于该值,则会和兄弟节点一起剪枝。如果样本有角度的缺失值,或者样本的分布偏差较大,则可以考虑权重问题。默认为0。
- max_features:划分的最大特征数,str、int、float类型。max_depth='log2'表示最多考虑\(log_2n\)个特征;max_depth={'sqrt','auto'}表示最多考虑\(\sqrt{n}\)个特征;max_depth=int类型,考虑\(|int类型|\)个特征;max_depth=float类型,如0.3,则考虑\(0.3n\)个特征,其中\(n\)为样本总特征数。默认为None,样本特征数不大于50推荐使用默认值。
- max_leaf_nodes:最大叶子节点数,int类型。限制最大叶子节点数,可以防止树过深,因此可以防止过拟合。默认为None。
- min_impurity_decrease:节点减小不纯度,float类型。如果某节点划分会导致不纯度的减少大于min_impurity_decrease,则停止该节点划分。默认为0。
- min_impurity_split:节点划分最小不纯度,float类型。如果某节点的不纯度小于min_impurity_split,则停止该节点划分,即不生成叶子节点。默认为1e-7(0.0000001)。
- class_weight:类别权重,dict类型或str类型。对于二元分类问题可以使用class_weight={0:0.9,1:0.1},表示0类别权重为0.9,1类别权重为0.1,str类型即为'balanced',模型将根据训练集自动修改不同类别的权重。默认为None。
- bootstrp:bool类型。默认为True。构建决策树时是否引导样本。
- oob_score:袋外模型,bool类型。是否采用袋外样本来评估模型的好坏,个人推荐设置为True,因为袋外分数反应了一个模型拟合后的泛化能力。默认为False。
- n_jobs:并行数,int类型。n_jobs=1使用1个cpu运行程序;n_jobs=2,使用2个cpu运行程序;n_jobs=-1,使用所有cpu运行程序。默认为1。
- random_state:随机数种子,int类型。random_state=None,不同时刻产生的随机数据是不同的;random_state=int类型,相同随机数种子不同时刻产生的随机数是相同的。默认为None。
- verbose:日志冗长度,int类型。verbose=0,不输出训练过程;verbose=1,输出部分训练过程;verbose>1,输出所有的训练过程。默认为0。
- warm_start:热启动,bool类型。如果为True,则基于上一个随机森林添加决策树;如果为False,则重新生成一个随机森林。默认为False。
- class_weight:样本类别权重,{dict类型,'balanced'}。给每个类别指定不同的权重,'balanced'将自动分配不同类别样本的权重。默认为None。
1.4 属性
- estimators_:list类型。所有决策树集合。
- classes_:array类型。所有类别列表。
- n_classes_:int类型。类别个数。
- n_features_:int类型。特征个数。
- n_outputs_:int类型。输出个数。
- feature_importances_:array类型。特征重要度。
- oob_score_:float类型。用袋外模型训练数据的分数。
- oob_decision_function_:array类型。袋外模型训练数据的决策函数。
1.5 方法
- apply(X[, check_input]):返回每个样本预测的叶子节点索引。
- decision_path(X[, check_input]):返回样本X在树中的决策路径。
- fit(X,y):把数据放入模型中训练模型。
- get_params([deep]):返回模型的参数,可以用于Pipeline中。
- predict(X):预测样本X的分类类别。
- predict_log_proba(X):返回样本X在各个类别上对应的对数概率。
- predict_proba(X):返回样本X在各个类别上对应的概率。
- score(X,y):基于报告决定系数\(R^2\)评估模型。
- set_prams(**params):创建模型参数。
二、RandomForestRegressor
RandomForestRegressor模型相比较RandomForestClassifier模型解决回归问题。
04-12 scikit-learn库之随机森林的更多相关文章
- 使用脚本自动配置matlab安装libsvm和随机森林工具箱
前言 支持向量机(SVM)和随机森林 都是用于分类的机器学习算法. 这里我需要对网上的工具箱在matlab中进行配置. 效果演示: 1.双击运行“自动配置.bat” 2.matlab会自动启动,手动配 ...
- Spark2.0机器学习系列之6:GBDT(梯度提升决策树)、GBDT与随机森林差异、参数调试及Scikit代码分析
概念梳理 GBDT的别称 GBDT(Gradient Boost Decision Tree),梯度提升决策树. GBDT这个算法还有一些其他的名字,比如说MART(Multiple Addi ...
- 机器学习回顾篇(12):集成学习之Bagging与随机森林
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- Python 实现的随机森林
随机森林是一个高度灵活的机器学习方法,拥有广泛的应用前景,从市场营销到医疗保健保险. 既可以用来做市场营销模拟的建模,统计客户来源,保留和流失.也可用来预测疾病的风险和病患者的易感性. 随机森林是一个 ...
- kaggle数据挖掘竞赛初步--Titanic<随机森林&特征重要性>
完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...
- Python机器学习笔记——随机森林算法
随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为“代 ...
- 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)
http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- kaggle 欺诈信用卡预测——不平衡训练样本的处理方法 综合结论就是:随机森林+过采样(直接复制或者smote后,黑白比例1:3 or 1:1)效果比较好!记得在smote前一定要先做标准化!!!其实随机森林对特征是否标准化无感,但是svm和LR就非常非常关键了
先看数据: 特征如下: Time Number of seconds elapsed between each transaction (over two days) numeric V1 No de ...
随机推荐
- 接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数
最近开发一款小程序的时候想到一个问题,如果接口突然挂掉怎么办呢,于是乎想到一个解决办法.接口请求重试功能.并限制请求次数 用最新的async函数语法实现.代码简洁明了. 测试代码如下: functio ...
- nvm 管理多个活动的node.js版本
前序:最近在使用taro框架开发小程序,因为安装taro时遇到一些问题,后来重新安装了node版本——v10.16.3,却影响了我本地开发的项目,故此使用nvm来管理node的版本,更加灵活的切换以支 ...
- 026 模块3-random库的使用
目录 一.random库基本介绍 1.1 random库概述 二.基本随机数函数 2.1 随机数种子 三.扩展随机数函数 3.1 随机数函数的使用 一.random库基本介绍 random库是使用随机 ...
- IO、IO序列化
文件:文件可认为是相关记录或放在一起的数据的集合.文件一般保存在硬盘.U盘.光盘.云盘的媒介中. JAVA API:java.io.File类可操作文件 File对象的构建 File file=new ...
- Android studio初次安装启动时弹出unable to access android sdk add-on list提示的解决方法
一.问题描述 初次安装Android Studio,启动后,报错如下: unable to access android sdk add-on lis 如图: 二.原因分析 AS启动后,会在默认路径下 ...
- Python文件访问编码格式问题UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position xx: 解决方案
1.Python读取文件 # .打开文件 file = open("ReadMe") # .读取文件类容 text = file.read() print(text) # .关闭文 ...
- 自定义JDBC工具类(配置文件)
import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql. ...
- ZooKeeper 介绍及集群环境搭建
本篇由鄙人学习ZooKeeper亲自整理的一些资料 包括:ZooKeeper的介绍,我们要学习ZooKeeper的话,首先就要知道他是干嘛的对吧. 其次教大家如何去安装这个精巧的智慧品! 相信你能研究 ...
- asp.net 导出excel带图片
protected void btgua_Click(object sender, EventArgs e) { DataTable dt = ds.Tables[0]; if (dt != null ...
- 神奇的 SQL 之谓词 → 难理解的 EXISTS
前言 开心一刻 我要飞的更高,飞的更高,啊! 谓词 SQL 中的谓词指的是:返回值是逻辑值的函数.我们知道函数的返回值有可能是数字.字符串或者日期等等,但谓词的返回值全部是逻辑值(TRUE/FALSE ...