随机森林(random forest)

1.随机森林基本思想

Bagging+决策树作为base model + 每个决策树权重为1 + Boostrap有放回的采样

2.决策树采用投票的方式。

假如训练了5颗树,其中4颗树是True,1颗树是False

那么结果就是True

3.单颗决策树建立的过程

(1)随即在N个样本中选择一个样本,重复N次(样本有可能重复)。

(2)随机在M个特征中选出m(m<=M)个特征。

那么建立多颗决策树,样本,特征大多不一样。

随机森林要求每颗决策树的正确率一定要大于50%,如果正确率小于50%,那么随机森林整体正确率也会远远低于单颗决策树。所以使用随机森林之前一定要检查,用来组成随机森林的分类树是否都至少有50%的正确率,如果没有,那就不要使用随机森林。

sklearn中的应用

4.随机森林分类器参数介绍

(1)criterion:不纯度的衡量指标(不纯度越低代表分类效果越好):gini,信息熵。

(2)max_depth:树的最大深度。

(3)min_samples_leaf=5:节点至少包含5个训练样本,如果少于5个,那么就不会再分支

(4)min_sample_split=5:节点必须包含5个样本,这个节点才被允许分支。

(5)max_features:限制分支时考虑的特征个数,超过限制个数都会被舍弃(有点类似于降维),默认值为总特征个数开平方取证。

(6)min_impurity_decrease:限制信息增益的大小,信息增益小于设置的数值,分支就不会发生。

注:随机森林的这些参数和决策树的参数一模一样

新的参数:

(1)n_estimators:使用决策树的个数,决策树的个数在增长到决策边界后,随机森林的准确率就不会增长。所以并不是决策树的数量越多越好。n_estimators的数量越大,消耗的时间和内存也越多。一般来说0-200之间是效果比较好的。

# 查看随机森林中每一棵树的属性参数
rfc.estimators_

(2)随机森林的random_state和决策树有区别,决策树是生成了一个随机数,随机森林是对每一棵树随机设置随机数,即每一棵树的随机数是不一样的。

(3)boostarp=True 开启有放回的随机抽样技术。

(3)oob_score:True    sklearn开启袋外数据验证,oob数据开启后,随机森林就不用切分训练集和测试集了。(当然随机森林可以用交叉验证也可以用袋外数据做验证)

# 查看袋外数据测试分数
rfc.oob_score_
# 返回每一个样本对应的每一类标签的概率
rfc.predict_proba(X_test)[[0.925 0.07  0.005][0.725 0.26  0.015][0.    1.    0.   ][0.27  0.59  0.14 ][0.015 0.965 0.02 ][0.98  0.01  0.01 ][0.335 0.625 0.04 ][0.005 0.055 0.94 ][0.92  0.06  0.02 ][0.    0.995 0.005][0.02  0.085 0.895][0.    0.    1.   ][0.    0.995 0.005][0.215 0.645 0.14 ][0.01  0.13  0.86 ][0.095 0.28  0.625][0.    0.06  0.94 ][0.06  0.25  0.69 ][0.985 0.015 0.   ][0.    0.995 0.005][0.62  0.375 0.005][0.99  0.01  0.   ][1.    0.    0.   ][0.91  0.08  0.01 ][0.    0.01  0.99 ][0.005 0.915 0.08 ][0.04  0.15  0.81 ][1.    0.    0.   ][0.03  0.97  0.   ][0.03  0.965 0.005][0.    0.98  0.02 ][0.01  0.98  0.01 ][0.18  0.15  0.67 ][0.94  0.03  0.03 ][0.995 0.005 0.   ][0.915 0.07  0.015][0.    0.    1.   ][0.995 0.005 0.   ][0.    1.    0.   ][0.015 0.94  0.045][0.09  0.91  0.   ][1.    0.    0.   ][0.185 0.765 0.05 ][0.085 0.235 0.68 ][0.96  0.04  0.   ]]

 5.随机森林分类代码实现:

    from sklearn.ensemble import RandomForestClassifier    # 随机森林进行预测rf = RandomForestClassifier()# 网格搜索与交叉验证param = {"n_estimators": [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}gs = GridSearchCV(rf, param_grid=param, cv=5)gs.fit(X_train, y_train)gs.predict(X_test)print("准确率是:",gs.score(X_test, y_test))print("选择的参数模型:", gs.best_params_)

6.随机森林做回归

sklearn机会所有的参数都和随机森林做回归一样。

不同点:

criterion的参数,分类树用的gini系数,信息增益。回归树用mse均方误差。

随机森林做回归没有predict_proba接口。

代码:

    regress = RandomForestRegressor(n_estimators=100, random_state=0)print(cross_val_score(regress, X, y, cv=10, scoring="neg_mean_squared_error"))# 返回的这些数是mse,mse越小,代表这个模型拟合的越好。# [-0.0146 - 0.04884444 - 0.05197222 - 0.07756111 - 0.09371111 - 0.01176111#  - 0.0136 - 0.20569444 - 0.17169412 - 0.01501765]print(sklearn.metrics.SCORERS.keys())

7.随机森林用回归的方式填补缺失值

(1)某一列里面含有缺失值:

对于回归任务,特征和标签是可以相互转换的,例如地区,环境,附近学校来预测房价,

那么如果有一列特征有缺失值,那么我们可以将这一列特征转换成标签,而标签则转换成特征,

那么这样转换后的标签就有一部分为null,一部分是有值的。而特征都是有值的。

那么我们就可以将有值的特征和标签当作训练集,剩下有值的对应缺失值的特征作为测试集X,

而标签空值作为预测值。训练模型带入X_test,预测出来缺失值。

(2)所有列都有缺失值

对于所有的列都有缺失值,我们可以从缺失值最少的列开始,假设其他的缺失值都是0,那么我们可以回归填补这一列的值,而以同样的做法处理第二列,以此类推。

这样到处理最后一列时(也是缺失值最多的一列),那么前面的所有缺失值都已经填满。所以最后一列含缺失值最多的一列信息丢失也最少。

处理到最后数据就全部完整不在有缺失值了。

import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_scoredef pre_data():boston = load_boston()X = boston.datay = boston.target# 确定一个随机种子rng = np.random.RandomState(10)# 给完整的数据添加一些缺失值,为了测试Imputern_samples = X.shape[0]n_feature = X.shape[1]missing_rate = 0.5# np.floor()向下取整返回一个.0的浮点数,再用int取整数。n_miss_samples = int(np.floor(n_samples * n_feature * missing_rate))# 取所有随机的横坐标纵坐标missing_features = rng.randint(0, n_feature, n_miss_samples)missing_samples = rng.randint(0, n_samples, n_miss_samples)X_missing = X.copy()    # X_missing数据进行处理y_missing = y.copy()    # y_missing不进行处理X_missing[missing_samples, missing_features] = np.nan# 用sklearn自带的方法填充空值# sp = SimpleImputer(missing_values=np.nan, strategy="mean")# X = sp.fit_transform(X_missing)# print(pd.DataFrame(X).info())# 用随机森林做预测进行填充空值X_missing_reg = X_missing.copy()for i in range(13):X_missing_reg = pd.DataFrame(X_missing_reg)sortindex = np.argsort(X_missing_reg.isnull().sum(axis=0)).values# 将第四列变成目标值fillc = X_missing_reg.iloc[:, i]df = X_missing_reg# 将去掉第i列剩下的列和Y合并成一个dfdf = pd.concat([df.iloc[:, df.columns != i], pd.DataFrame(y_missing)], axis=1)# 填充0df_0 = SimpleImputer(missing_values=np.nan, strategy="constant", fill_value=0).fit_transform(df)Ytrain = fillc[fillc.notnull()]Ytest = fillc[fillc.isnull()]Xtest = df_0[Ytest.index, :]Xtrain = df_0[Ytrain.index, :]# 随机森林训练模型rfc = RandomForestRegressor(n_estimators=100)rfc.fit(Xtrain, Ytrain)# 随机森林预测出来剩下的标签值Ypredict = rfc.predict(Xtest)#print(X_missing_reg.iloc[:, 4].isnull())# 用loc传入内容返回对应的索引X_missing_reg.loc[X_missing_reg.iloc[:, i].isnull(), i] = Ypredict# # 查看有无缺失值# print(X_missing_reg.isnull().sum())return X_missing_reg, ydef Reg(data, target):# 建立模型Rfr = RandomForestRegressor(n_estimators=200,criterion='mse',max_depth=5)# 交叉验证print(cross_val_score(Rfr, data, target, scoring="neg_mean_squared_error", cv=10).mean())if __name__ == "__main__":X, y = pre_data()Reg(X, y)

5.随机森林的优点:

(1)具有良好的准确率。

(2)得益于bagging,能够并行训练,能够运行在大数据集上面。

(3)能够处理高纬度特征输入样本,而且不需要降维。

(4)能够评估各个特征在分类问题上的重要性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7903.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随机森林详解

随机森林&#xff08;Random Forest&#xff09;是属于集成学习的一种组合分类算法&#xff0c;集成学习的核心思想就是将若干个弱&#xff08;基&#xff09;分类器组合起来&#xff0c;得到一个分类性能显著优越的强分类器。如果各弱分类器之前没有强依赖关系、可并行生成&am…

Bagging与随机森林

下图是基于树的算法的发展历程 1、Bagging Bagging [Breiman, 1996a] 是并行式集成学习方法最著名的代表. 1.1、Bagging原理 bagging算法&#xff1a;bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样&#xff0c;我们就可以得到T个采样集&#xff…

随机森林-参数解说

sklearn–随机深林 1.集成算法概述 集成学习&#xff08;ensemble learning&#xff09;是时下非常流行的机器学习算法&#xff0c;它本身不是一个单独的机器学习算法&#xff0c;而是通过在数据上构建多个模型&#xff0c;集成所有模型的建模结果。基本上所有的机器学习领域都…

Random Forest随机森林算法

Random Forest是加州大学伯克利分校的Breiman Leo和Adele Cutler于2001年发表的论文中提到的新的机器学习算法&#xff0c;可以用来做分类&#xff0c;聚类&#xff0c;回归&#xff0c;这里只简单介绍该算法在分类上的应用。 Random Forest&#xff08;随机森林&#xff09;算…

【随机森林】random forests 简单介绍

Random Forest&#xff0c;顾名思义 Random 就是随机抽取&#xff1b; Forest 就是说这里不止一棵树&#xff0c;而由 一群决策树组成的一片森林 &#xff0c;连起来就是用随机抽取的方法训练出一群决策树来完成分类任务。RF用了两次随机抽取, 一次是对训练样本的随机抽取; 另一…

随机森林!

定义:在以决策树为基学习器构建Bagging集成的基础上&#xff0c;进一步在决策树节点分裂时引入随机属性扰动。 随机性体现(与传统决策树的差异):对基决策树的每个节点&#xff0c;先从该节点的属性集合中随机选择包含K(log2(d))个属性的子集&#xff0c;然后再从这个子集中选择…

随机森林 (Random Forests) 简单介绍与应用

1 集成方法(Ensemble methods) 1.1 什么是集成方法 简单来说&#xff0c;集成方法 就是组合多个模型&#xff0c;以获得更好效果。 1.2 两种集成方法 平均法(averaging methods)&#xff1a;也有人直接称之为“袋装法”&#xff0c;所有算法进行 相互独立 训练得到各自的模…

随机森林--

----------------------集成学习---------------------- 集成学习可以被分为三个主要研究领域&#xff1a; -----------------------------------------------------模型融合----------------------------------------------------- 模型融合在最初的时候被称为“分类器结合…

R随机森林实现

原文链接&#xff1a;来自公众号生信数据挖掘 目录 R实现随机森林随机森林R包估值过程袋外错误率&#xff08;oob error&#xff09;R randomForest函数实现安装程序包&#xff0c;查看样本数据结构建模与观察 R实现随机森林 该文只简单的讲解关于的R的随机森林具体实现步骤&a…

随机森林 – Random forest

随机森林 – Random forest 随机森林是一种由决策树构成的集成算法&#xff0c;他在很多情况下都能有不错的表现。 本文将介绍随机森林的基本概念、4 个构造步骤、4 种方式的对比评测、10 个优缺点和 4 个应用方向。 什么是随机森林&#xff1f; 随机森林属于 集成学习 中的 …

随机森林原理详解 random forest 代码+参数讲解

事实上随机森林的基本单元决策树很早就被提出来了&#xff0c;只不过单个决策树效果不好。这个情况和神经网络差不多。 到了2001年Breiman把分类树组合成随机森林&#xff08;Breiman 2001a&#xff09;&#xff0c;即在变量&#xff08;列&#xff09;的使用和数据&#xff0…

随机森林及应用

学习了B站视频《随机森林及应用》&#xff0c;记录一下学习笔记啦&#xff0c;原视频链接&#xff1a;Python机器学习算法实践Ⅲ-随机森林及应用。 一、随机森林属于集成学习&#xff0c;所以首先了解集成学习。在集成学习中&#xff0c;主要分为Bagging算法和Boosting算法。 B…

随机森林(Random Forests)介绍

1.决策树&#xff08;Decision Tree&#xff09; 决策树是一种树形结构&#xff0c;其中每个内部节点表示一个属性上的测试&#xff0c;每个分支代表一个测试输出&#xff0c;每个叶节点代表一种类别。常见的决策树算法有C4.5、ID3和CART。ID3算法用的是信息增益&#xff0c;C…

使用随机森林进行特征选择

绘制随机森林每棵树的决策边界 首先导入必要的库函数&#xff1a; from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_moons from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import numpy as…

python实现随机森林

定义&#xff1a; 随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。可回归可分类。 所以随机森林是基于多颗决策树的一种集成学习算法&#xff0c;常见的决策树算法主要有以下几种&#xff1a; 1. ID3&#xff1a;使用信息增益g(D,A)进行特征选择 2. C4.5&…

教你体验目前最火AI - 在craft AI assistant 使用chatGPT

atGPT大火之后&#xff0c;很多人都想体验一把&#xff0c;今天为大家推荐一种免费方式&#xff0c;体验chatGPT同款内核的AI助手。 craft AI assistant Craft 推出的 AI 助手产品 Craft AI Assistant&#xff0c;并且现在就可以使用。根据 Craft 官方介绍&#xff0c;Craft …

【ChatGPT+AI】持续更新

ChatGPT的缘分 ChatGPT的缘分 一、小白必知1.1ChatGPT是什么&#xff1f;1.2ChatGPT怎么用&#xff1f;1.3ChatGPT登录注意事项 二、ChatGPT实战2.1什么Prompt&#xff1f;2.2ChatGPT怎么发图片2.3ChatGPT快速制作PPT 三、其他AI与免费镜像网站四、星球介绍 ChatGPT的缘分 大家…

DetectGPT VS ChatGPT:AI反击战?

1.背景 随着 ChatGPT 的持续火爆&#xff0c;现在无论哪个行业&#xff0c;几乎是人尽皆知。同时&#xff0c;利用 ChatGPT 进行造假作弊的情况也是层出不穷&#xff0c;尤其是在教育和传媒行业。在美国的一项千人调查中&#xff0c;有89%的学生表示在家庭作业中使用了 ChatGP…

多国拟发ChatGPT禁令 关“野兽”的笼子要来了?

“人工智能想越狱“、”AI产生自我意识”、“AI终将杀死人类”、“硅基生命的进化”.......曾经只在在赛博朋克等科技幻想中出现的剧情&#xff0c;在今年走向现实&#xff0c;生成式自然语言模型正在遭受前所未有的质疑。 聚光灯下最瞩目的那个是ChatGPT&#xff0c;3月底到4…

ChatGPT从入门到精通,深入认识Prompt

ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定 让ChatGPT帮你高效实现职场办公&#xff01;行动起来吧。欢迎关注专栏 。。。。。 还有更多。。。。&…