精华内容
下载资源
问答
  • matlab软件随机森林回归模型代码,可直接matlab打开运行!精简版,包括数据导入、模型建立、误差计算、保存模型,绘制对比图的多个功能!
  • 主要通过sklearn中来实现随机森林回归模型对波士顿房价进行回归预测
  • 引入RFR(random forest regression,随机森林回归)算法,分析气象条件、大气污染物浓度和季节所包含的22项特征因素,通过调整参数的最优组合,设计出一种新的PM2.5浓度预测模型——RFRP模型。同时,收集了西安市...
  • R语言 随机森林回归

    2017-08-30 19:13:07
    主要利用R语言进行随机森林回归,还有其他两种回归, library(lattice) library(grid) library(DMwR) library(rpart) library(ipred) library(randomForest) #回归树,装袋算法,随机森林三大回归 #前二种算法可以...
  • 资料说明:包括数据集+源代码+Word文档说明。 资料内容包括: 1)问题定义; 2)获取数据; 3)数据预处理; 4)探索性数据分析; 5)特征工程; 6)机器建模; 7)模型评估; 8)实际应用。
  • 随机森林回归matlab代码,可用于回归和分类,简单易用
  • 随机森林回归模型 万事俱备,我们可以来建立随机森林模型啦,首先导入工具包,先建立1000个树试试吧,其他参数先用默认值,之后我们会再深入到调参任务中: # 导入算法 from sklearn.ensemble import ...

    随机森林气温预测数据+代码

    随机森林回归模型

    万事俱备,我们可以来建立随机森林模型啦,首先导入工具包,先建立1000个树试试吧,其他参数先用默认值,之后我们会再深入到调参任务中:

    # 导入算法
    from sklearn.ensemble import RandomForestRegressor
    
    # 建模
    rf = RandomForestRegressor(n_estimators= 1000, random_state=42)
    
    # 训练
    rf.fit(train_features, train_labels)
    

    由于数据样本量还是非常小的,所以很快就可以得到结果了,这里我们先用MAPE指标来进行评估,也就是平均绝对百分误差,其实对于回归任务,评估方法还是比较多,给大家列出来几种,很简单就可以实现出来,也可以选择其他指标来进行评估:
    在这里插入图片描述

    测试

    # 预测结果
    predictions = rf.predict(test_features)
    
    # 计算误差
    errors = abs(predictions - test_labels)
    
    # mean absolute percentage error (MAPE)
    mape = 100 * (errors / test_labels)
    
    print ('MAPE:',np.mean(mape))
    
    MAPE: 6.011244187972058
    

    可视化展示树

    # 导入所需工具包
    from sklearn.tree import export_graphviz
    import pydot #pip install pydot
    
    # 拿到其中的一棵树
    tree = rf.estimators_[5]
    
    # 导出成dot文件
    export_graphviz(tree, out_file = 'tree.dot', feature_names = feature_list, rounded = True, precision = 1)
    
    # 绘图
    (graph, ) = pydot.graph_from_dot_file('tree.dot')
    
    # 展示
    graph.write_png("somefile.png")
    

    在这里插入图片描述

    print('The depth of this tree is:', tree.tree_.max_depth)
    
    The depth of this tree is: 15
    

    执行完上述代码,会在指定的目录下(如果只指定其名字,会在代码所在路径下)生成一个tree.png文件,这就是绘制好的一棵树的模型,如图 所示。树模型看起来有点太大,观察起来不太方便,可以使用参数限制决策树的规模, 预剪枝方案在这里可以派上用场。

    预剪枝

    # 限制一下树模型 n_estimators棵树采用的数据集都是独立自助采样的,最大深度和随机数种子
    rf_small = RandomForestRegressor(n_estimators=10, max_depth = 3, random_state=42)
    rf_small.fit(train_features, train_labels)
    
    # 提取一颗树
    tree_small = rf_small.estimators_[8]
    
    # 保存
    export_graphviz(tree_small, out_file = 'small_tree.dot', feature_names = feature_list, rounded = True, precision = 1)
    
    (graph, ) = pydot.graph_from_dot_file('small_tree.dot')
    
    graph.write_png('small_tree.png')
    

    在这里插入图片描述
    对生成的树模型中各项指标的含义进行了标识,看起来还是比较好理解,其中非叶子节点中包括 4项指标∶ 所选特征与切分点、评估结果、此节点样本数量、节点预测结果(回归中就是平均)。

    特征重要性

    讲解随机森林算法的时候,曾提到使用集成算法很容易得到其特征重要性,在sklearn工具包中也有现成的函数,调用起来非常容易∶

    # 得到特征重要性
    importances = list(rf.feature_importances_)
    
    # 转换格式
    feature_importances = [(feature, round(importance, 2)) for feature, importance in zip(feature_list, importances)]
    
    # 排序
    feature_importances = sorted(feature_importances, key = lambda x: x[1], reverse = True)
    
    # 对应进行打印
    [print('Variable: {:20} Importance: {}'.format(*pair)) for pair in feature_importances]
    

    在这里插入图片描述
    上述输出结果分别打印了当前特征及其所对应的特征重要性,绘制成图表分析起来更容易∶

    上述代码可以可以明显发现,temp_1和average这两个特征的重要性占据总体的绝大部分,其他特征的重要性看起来微乎其微。

    # 转换成list格式
    x_values = list(range(len(importances)))
    
    # 绘图
    plt.bar(x_values, importances, orientation = 'vertical')
    
    # x轴名字
    plt.xticks(x_values, feature_list, rotation='vertical')
    
    # 图名
    plt.ylabel('Importance'); plt.xlabel('Variable'); plt.title('Variable Importances'); 
    

    在这里插入图片描述

    那么,只用最厉害的特征来建模,其效果会不会更好呢?其实并不能保证效果一定更好,但是速度肯定更快,先来看一下结果∶

    # 选择最重要的那两个特征来试一试
    rf_most_important = RandomForestRegressor(n_estimators= 1000, random_state=42)
    
    # 拿到这俩特征
    important_indices = [feature_list.index('temp_1'), feature_list.index('average')]
    train_important = train_features[:, important_indices]
    test_important = test_features[:, important_indices]
    
    # 重新训练模型
    rf_most_important.fit(train_important, train_labels)
    
    # 预测结果
    predictions = rf_most_important.predict(test_important)
    
    errors = abs(predictions - test_labels)
    
    # 评估结果
    
    mape = np.mean(100 * (errors / test_labels))
    
    print('mape:', mape)
    
    
    6.229055723613811
    

    从损失值上观察,并没有下降,反而上升了,说明其他特征还是有价值的,不能只凭特征重要性就否定部分特征数据,一切还要通过实验进行判断。
    但是,当考虑时间效率的时候,就要好好斟酌一下是否应该剔除掉那些用处不大的特征以加快构建模型的速度。到目前为止,已经得到基本的随机森林模型,并可以进行预测,下面来看看模型的预测值与真实值之间的差异∶

    # 日期数据
    months = features[:, feature_list.index('month')]
    days = features[:, feature_list.index('day')]
    years = features[:, feature_list.index('year')]
    
    # 转换日期格式
    dates = [str(int(year)) + '-' + str(int(month)) + '-' + str(int(day)) for year, month, day in zip(years, months, days)]
    dates = [datetime.datetime.strptime(date, '%Y-%m-%d') for date in dates]
    
    # 创建一个表格来存日期和其对应的标签数值
    true_data = pd.DataFrame(data = {'date': dates, 'actual': labels})
    
    # 同理,再创建一个来存日期和其对应的模型预测值
    months = test_features[:, feature_list.index('month')]
    days = test_features[:, feature_list.index('day')]
    years = test_features[:, feature_list.index('year')]
    
    test_dates = [str(int(year)) + '-' + str(int(month)) + '-' + str(int(day)) for year, month, day in zip(years, months, days)]
    
    test_dates = [datetime.datetime.strptime(date, '%Y-%m-%d') for date in test_dates]
    
    predictions_data = pd.DataFrame(data = {'date': test_dates, 'prediction': predictions}) 
    
    # 真实值
    plt.plot(true_data['date'], true_data['actual'], 'b-', label = 'actual')
    
    # 预测值
    plt.plot(predictions_data['date'], predictions_data['prediction'], 'ro', label = 'prediction')
    plt.xticks(rotation = '60'); 
    plt.legend()
    
    # 图名
    plt.xlabel('Date'); plt.ylabel('Maximum Temperature (F)'); plt.title('Actual and Predicted Values');
    

    在这里插入图片描述
    通过上述输出结果的走势可以看出,模型已经基本能够掌握天气变化情况,接下来还需要深入数据,考虑以下几个问题。

    1. 如果可利用的数据量增大,会对结果产生什么影响呢?
    2. 加入新的特征会改进模型效果吗?此时的时间效率又会怎样?
    展开全文
  • 训练随机森林回归模型 RandomForestRegressor bootstrap 表示是够有放回抽样,还是不放回抽样 # 训练随机森林回归模型 RandomForestRegressor from sklearn.ensemble import RandomForestRegressor from sklearn ...

    训练随机森林回归模型 RandomForestRegressor

    bootstrap 表示是够有放回抽样,还是不放回抽样

    # 训练随机森林回归模型 RandomForestRegressor
    from sklearn.ensemble import RandomForestRegressor
    from sklearn import datasets
    ​
    boston = datasets.load_boston()
    features = boston.data[:, 0:2]
    target = boston.target
    # 训练模型   bootstrap 表示是够有放回抽样,还是不放回抽样
    randomforest = RandomForestRegressor(random_state=0, n_jobs=-1)
    model = randomforest.fit(features, target)
    
    
    
    展开全文
  • RF_regressor 使用sklearn随机森林回归器的预测模型
  • #Get data for tarfile in Github, extract it in datasets/housing: import os import tarfile from six . moves import urllib ...HOUSING_PATH = os . path ....HOUSING_URL = DOWNLOAD_ROOT + HOUSING_PATH + "/...
  • 使用R构建随机森林回归模型(Random Forest Regressor) 目录 使用R构建随机森林回归模型(Random Forest Regressor) 安装包randomForest 缺失值填充 模型构建 模型调优 预测推理 当一组预测变量...

    使用R构建随机森林回归模型(Random Forest Regressor)

    目录

    使用R构建随机森林回归模型(Random Forest Regressor)

    安装包randomForest

    缺失值填充</

    展开全文
  • 为研究随机森林在分类与回归分析中的应用提供参考 ">随机森林 random forest 模型是由Breiman 和Cutler 在2001 年提出的一种基于分类树的算法 它通过 对大量分类树的汇总提高了模型的预测精度 是取代神经网络等传统...
  • R包randomForest的随机森林回归模型以及对重要变量的选择关于随机森林(random forest),前文“随机森林分类以及对重要变量的选择”中已经对其基本原理作了简单概括。在前文中,响应变量是一组类别变量(代表了样本的...
    e5cdf16b3c08a49d9c7233a4a7ddd055.gif R包randomForest的随机森林回归模型以及对重要变量的选择 f155cc450b6f8ace271826e2bd34a73d.gif 关于随机森林(random forest),前文“随机森林分类以及对重要变量的选择 ”中已经对其基本原理作了简单概括。在前文中,响应变量是一组类别变量(代表了样本的分组信息),此时随机森林用于执行监督分类的功能,模型的精度在于通过选定的预测变量组合将样本正确划分归类的概率。 而当响应变量是一组连续变量时,可将回归森林用于回归。此时,回归模型的精度体现了选定的预测变量对响应变量数值改变有关方差的整体解释率(可以理解为回归的 R2 )。 本篇则简介随机森林的回归功能。

    文献中使用随机森林回归的一个实例

    首先来看一篇与植物根系微生物组有关研究,将文中涉及到随机森林回归的部分内容节选出来以帮助大家理解。

    Edwards等(2018)分析了来自两个地区(加利福尼亚州、阿肯色州)以及三个连续种植季(2014、2015、2016)的水稻根系微生物组,意在阐述水稻根系微生物群落的时间动态特征,并解释驱动微生物群落组建的成因。文中部分内容使用到随机森林的回归模型建立微生物丰度和水稻生长时期的关系,用以识别重要的时间响应微生物类群。

    3d3813cfaa49db6e8d9deb7ebee86f44.png

    作者首先分析了水稻根系微生物群落的组成结构,显示其受到地理区域(土壤环境)、植物生长时期以及植物根系不同部位的多重影响。随后分析各个因素的相对效应,发现水稻生长过程中能够逐渐对其根系菌群进行选择,植物生长时期的效应越来越明显,根系菌群朝向一组保守的物种组成趋势发展,同时地理环境效应的比重逐渐减弱。主要体现在:

    (1)不同地理区域种植的水稻,随着水稻生长时期的推移,根际和根内菌群的相似度逐渐增加,并在后期趋于稳定,与种植季节无关:

    (2)对于水稻根际和根内菌群,地区间独特OTU的相对丰度均随时间推移而不断下降,剩余的OTU中,两地区间共有OTU的比重上升。

    cd89436e6e9af3c1f1d9299a0cea0376.png

    图A-C,水稻根系微生物群落的PCoA,分别突出了群落组成相似度与根系区域(A)、地理区域(B)或植物生长时间(C)的关系。

    图D,根区、根际和根内样本中,微生物群落相似度随植物生长的关系。

    总之存在一类具有显著时间特征的微生物类群,它们的丰度变化与水稻的生长时期密切相关,无论是增加(根系富集)或减少(根系排斥)。随后,作者期望寻找可用于区分水稻生长时期的微生物OTU组合,包括根际和根内菌群,就使用了随机森林。

    作者选择了一部分的样本(加利福尼亚州2014年和阿肯色州2016年的部分数据)用作训练集,通过随机森林分别将根际和根内所有微生物OTU的相对丰度与水稻生长时期进行了回归,并根据各个OTU对模型预测准确性的相对贡献按重要性进行排名。十折交叉验证用于评估模型中OTU数量与模型误差的关系,并按重要性排名对OTU进行选择,删除了大部分不重要OTU后,最终保留的OTU用于构建最终的随机森林回归模型。

    结果中,共确定了85个最重要的与水稻生长时期密切关联的OTU。训练集的数据显示,通过这85个OTU构建的随机森林回归模型分别解释了根际和根内菌群对植物年龄有关方差的91.5%和88.4%,表明它们的丰度组合能够准确预测水稻的生长时期。此外,测试集以及验证集数据(涉及了训练集样本外的其它采样时间、地理区域的样本)也一致地表明,通过这85个OTU构建的随机森林回归模型同样准确预测了水稻的生长时期,凸显了水稻根际和根内存在特定的微生物类群,在跨地理区域和季节的水稻植物的生命周期中表现出一致的模式。

    7a0586d276512c81a3e1d4bd4b526417.png

    图A,横坐标是水稻的实际生长时期,纵坐标是随机森林模型通过根际或根内微生物丰度预测的水稻生长时期,模型具有很高的精度。

    图B,重要的85个OTU在水稻根际或根内的丰度与时间的关系。

    图C,85个OTU根据丰度的时间响应模式,可分为早期定植(丰度早期很高,但随时间降低)或晚期定植(丰度早期很低,但随时间增加)以及复合型(早期晚期定植区分不明显)类群,柱形图展示了3种类群中OTU平均丰度变化趋势。

    文中后续还有内容涉及到随机森林模型的应用,这里就不再展示了。节选的部分章节想必也足以能够帮助大家了解这个方法的实际应用了。

    此外,该文献的补充材料中提供了有关OTU丰度表、分析过程的R代码等非常全面的数据,大家若有兴趣参考原文即可。

    接下来,展示随机森林回归及对重要变量选择在R语言中的实现方法。

    通过R包randomForest的随机森林执行回归

    对于随机森林应用在类别型响应变量中的分类功能,前文“随机森林分类模型以及对重要变量的选择”中,已经以R包randomForest中的方法为例展示了如何通过随机森林构建分类预测模型(分类模型的训练和测试),以及筛选对区分已知分类具有高度鉴别模式的变量组合(评估变量的相对重要性)。

    在下文中,将响应变量更换为连续型变量,继续展示R包randomForest的随机森林回归方法以及实现对重要变量的选择。其实无论执行的分类还是回归,过程中使用的方法都是一样的,R函数还是那些R函数,区别只在于对部分函数的参数设置以及结果的解读方式上。

    下文的测试数据,R代码等的百度盘链接(提取码,fljz):

    https://pan.baidu.com/s/1Lfk21hGrWDehodWchBiIIg

    若百度盘失效,也可在GitHub的备份中获取:

    https://github.com/lyao222lll/sheng-xin-xiao-bai-yu

    示例数据

    植物根系菌群结构与植物生长密切相关,到目前为止,已经在许多研究中都有报道了,这已经是个共识。因此,下文的示例数据也同样来自某植物根际区域细菌群落组成的16S扩增子测序数据,类似地,仿照上文文献中的过程,通过随机森林建立微生物与植物生长时期的响应关系,根据微生物丰度推断植物生长时期,并寻找一组重要的时间特征类群。

    示例数据“otu_table.txt”中,共记录了45个连续生长时间中植物根际土壤样本中细菌OTU的相对丰度信息。

    2882ded5c05696f647921573192e537e.png

    “plant_age.txt”中,记录了这45个根际土壤样本对应的植物生长时间,时间单位是天。

    ef9d0042d7366b601b26169051807e2a.png

    随机森林回归模型的初步构建

    将OTU丰度数据读入R中,可以事先作一些预处理,例如剔除低丰度类群等。

    随后,对应OTU丰度样本与植物生长时间的关系,加载randomForest包并运行随机森林。

    ##数据预处理
    #读取 OTUs 丰度表
    otu
    #过滤低丰度 OTUs 类群,它们对分类贡献度低,且影响计算效率
    #例如剔除总丰度低于 0.05% 的值
    otu = 0.0005), ]
    #合并有关于植物生长时间的信息
    plant
    otu otu otu
    #为了方便后续评估随机森林模型的性能
    #将总数据集分为训练集(占 70%)和测试集(占 30%)
    set.seed(123)
    train otu_train otu_test
    ##randomForest 包的随机森林
    library(randomForest)
    #随机森林计算(默认生成 500 棵决策树),详情 ?randomForest
    set.seed(123)
    otu_train.forest otu_train.forest
    679ec8f3a4f4069b65737f224631b4e3.png

    结果中,% Var explained体现了预测变量(用于回归的所有OTU)对响应变量(植物年龄)有关方差的整体解释率。在本示例中,剔除了低丰度的OTU后,剩余的OTU(约2600个左右)解释了约89.17%的总方差,可以理解为该回归的R2=0.8917,相当可观的一个数值,表明该植物根际细菌的群落结构随植物生长密切相关。

    查看该模型的预测性能,可以看到具有较高的精度。

    #使用训练集,查看预测精度
    plant_predict
    plot(otu_train$plant_age, plant_predict, main = '训练集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    #使用测试集,评估预测性能
    plant_predict
    plot(otu_test$plant_age, plant_predict, main = '测试集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    eef321c725a5ec91b630abf9719d456d.png

    重要的预测变量选择

    但是,并非这所有的2600余个OTU都对回归的精度具有可观的贡献。有些OTU丰度的时间特征并不明显,可能在回归中产生较大噪声,对模型精度带来较高的误差。因此,最好将低贡献的OTU去除。

    评估预测变量的重要性

    基于已经构建好的随机森林回归模型,可以从中评估OTU的重要性。将OTU按重要程度高低进行排名后,选择排名靠前的一部分OTU,这些重要的OTU是明显的与植物生长时间密切关联的一些细菌类群。

    ##OTU 的重要性评估
    #查看表示每个预测变量(细菌 OTU)重要性的得分
    #summary(otu_train.forest)
    importance_otu head(importance_otu)
    #或者使用函数 importance()
    importance_otu head(importance_otu)
    #作图展示 top30 重要的 OTUs
    varImpPlot(otu_train.forest, n.var = min(30, nrow(otu_train.forest$importance)),
    main = 'Top 30 - variable importance')

    ba466a373dca09a183ae6ba04398d115.png

    “%IncMSE”即increase in mean squared error,通过对每一个预测变量随机赋值,如果该预测变量更为重要,那么其值被随机替换后模型预测的误差会增大。因此,该值越大表示该变量的重要性越大;

    “IncNodePurity”即increase in node purity,通过残差平方和来度量,代表了每个变量对分类树每个节点上观测值的异质性的影响,从而比较变量的重要性。该值越大表示该变量的重要性越大。

    对于“%IncMSE”或“IncNodePurity”,二选一作为判断预测变量重要性的指标。需注意的是,二者的排名存在一定的差异。

    #可以根据某种重要性的高低排个序,例如根据“IncNodePurity”指标
    importance_otu head(importance_otu)
    #输出表格
    #write.table(importance_otu, 'importance_otu.txt', sep = '\t', col.names = NA, quote = FALSE)
    0589dd414e2ed0637dfae3dad54fde91.png

    交叉验证

    那么,最终选择多少重要的预测变量(本示例为OTUs)是更合适的呢?

    可通过执行十折交叉验证,根据交叉验证曲线对OTU进行取舍。交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。此处使用训练集本身进行交叉验证。

    ##交叉验证辅助评估选择特定数量的 OTU
    #5 次重复十折交叉验证
    set.seed(123)
    otu_train.cv otu_train.cv
    #提取验证结果绘图
    otu_train.cv otu_train.cv$otus otu_train.cv otu_train.cv$otus
    otu_train.cv.mean head(otu_train.cv.mean, 10)
    #拟合线图
    library(ggplot2)
    ggplot(otu_train.cv.mean, aes(Group.1, x)) +
    geom_line() +
    theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent')) +
    labs(title = '',x = 'Number of OTUs', y = 'Cross-validation error')

    0fc93954547ae170962d5b5277602cf0.png

    交叉验证曲线展示了模型误差与用于拟合的OTU数量之间的关系。误差首先会随OTUs数量的增加而减少,开始时下降非常明显,但到了特定范围处,下降幅度将不再有显著变化,甚至有所增加。

    根据交叉验证曲线,提示保留9-13个重要的OTU即可以获得理想的回归结果,因为此时的误差达到最小。

    因此,根据计算得到的各OUT重要性的值(如“IncNodePurity”),将OTU由高往低排序后,最后大约选择前9-13个OTU就可以了。

    #提示保留 9-13 个重要的 OTU,可以使随机森林回归的精度最大化
    #首先根据某种重要性的高低排个序,例如根据“IncNodePurity”指标
    importance_otu
    #然后取出排名靠前的 OTU,例如 top10 最重要的 OTU
    importance_otu.select importance_otu.select
    #输出表格
    #write.table(importance_otu.select, 'importance_otu.select.txt', sep = '\t', col.names = NA, quote = FALSE)
    #有关 OTU 的物种分类信息等其它细节,可后续自行补充

    9157fcee6ee0e557d8208e032cd2853f.png

    #不妨简单查看下这些重要的 OTU 丰度与植物生长时间的关系
    #可以看到趋势非常明显,包括根际富集或排斥等都有涉及
    otu_id.select otu.select otu.select
    ggplot(otu.select, aes(x = plant_age, y = value)) +
    geom_point() +
    geom_smooth() +
    facet_wrap(~variable, ncol = 3, scale = 'free_y') +
    labs(title = '',x = 'Plant age (days)', y = 'Relative abundance')
    327156ecb1773d50534ca5558bfb3358.png

    最终模型的确定

    现在来看,只使用选择的10个重要的OTU构建回归模型,效果如何。

    ##只包含 10 个重要预测变量的简约回归
    otu.select
    #为了方便后续评估随机森林模型的性能,将总数据集分为训练集(占 70%)和测试集(占 30%)
    set.seed(123)
    train otu_train.select otu_test.select
    #随机森林计算(默认生成 500 棵决策树),详情 ?randomForest
    set.seed(123)
    otu_train.select.forest otu_train.select.forest
    #使用训练集,查看预测精度
    plant_predict
    plot(otu_train.select$plant_age, plant_predict, main = '训练集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    #使用测试集,评估预测性能
    plant_predict
    plot(otu_test.select$plant_age, plant_predict, main = '测试集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)

    5eb3cc63210c3511d7eaf2185e527293.png

    结果显示,与先前使用全部的OTU(去除低丰度后约2600多个)相比,只使用这10个更重要OTU的随机森林回归模型,获得了更出色的效果。

    一是体现在% Var explained,模型中预测变量(这10个重要的OTU)对响应变量(植物年龄)有关方差的整体解释率达到了96.49%,大于先前的89.17%,这得益于排除了不重要或者高噪声的OTU。二是预测性能更佳,特别是对于测试集,与先前的分布图相比较(见上文),植物实际生长时间与通过根际菌群预测的植物年龄更趋一致。

    如果不涉及预测,只是评估变量的重要性

    上文过程中,为了评估随机森林回归模型的预测性能,将数据拆分为训练集和测试集分开讨论。但如果目的不涉及预测,只是为了寻找重要的预测变量,完全可以直接使用所有数据代入回归,无需再区分训练集与测试集,这也是很多文献中经常提到的方法。

    例如另一篇类似的研究,Zhang等(2018)寻找水稻根系中与植物生长期密切相关的biomarkers时,同样使用的随机森林回归。但区别是文中没有涉及预测,关注的重点在于识别重要的微生物类群。

    0d6137d651872a3d93875001396d780a.png

    参考文献

    Edwards J, Santosmedellin C, Liechty Z, et al. Compositional shifts in root-associated bacterial and archaeal microbiota track the plant life cycle in field-grown rice. PLOS Biology, 2018, 16(2). Zhang J, Zhang N, Liu Y, et al. Root microbiota shift in rice correlates with resident time in the field and developmental stage. Science China-life Sciences, 2018, 61(6): 613-621. e5cdf16b3c08a49d9c7233a4a7ddd055.gif 友情链接 f155cc450b6f8ace271826e2bd34a73d.gif

    通过Aggregated boosted tree(ABT)评估解释变量的重要性

    基于相似或相异度矩阵的多元回归(MRM)及R语言实例

    回归中自变量的交互效应及R语言计算示例

    R语言执行带类别型预测变量的线性回归示例

    多元回归中的多重共线性问题简述

    多元回归中常见的变量选择方法及其在R中实现

    多元线性回归在R中的实现示例

    简单线性回归和多项式回归在R中的实现示例

    生存分析之R包survival的单变量和多变量Cox回归

    约束聚类-多元回归树及重要判别变量识别

    几种常见的判别分析分类方法

    随机森林分类模型以及对重要变量的选择

    e2d204a1d82ac06298a382b6043e2e74.gif

    cbe2cadd20bb2aaf3f727164ddb18610.png

    展开全文
  • 随机森林回归模型能够通过组合不同的决策树降低方差,但有时会略微增加偏差。在实际应用中,方差降低通常比偏差增加更加显著,所以随机森林回归模型能够取得更好的效果。 二.用法和参数 n_estimators参数:用于设置...
  • 随机森林算法随机森林是一种比较新的机器学习模型
  • 定义:随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。可回归可分类。所以随机森林是基于多颗决策树的一种集成学习算法,常见的决策树算法主要有以下几种:1. ID3:使用信息增益g(D,A)进行特征选择...
  • 随机森林回归简单示例

    千次阅读 2020-07-24 16:37:03
    # 5 模型评估 # 随机森林回归模型评估 print("随机森林回归的默认评估值为:", rfr.score(x_test, y_test)) print("随机森林回归的R_squared值为:", r2_score(y_test, rfr_y_predict)) print("随机森林回归的均方...
  • 通过随机森林回归分析自动提取3D形状的通用焦点特征
  • MATLAB随机森林回归模型

    千次阅读 2016-03-06 17:36:00
    MATLAB随机森林回归模型: 调用matlab自带的TreeBagger.m T=textread('E:\datasets-orreview\discretized-regression\10bins\abalone10\matlab\test_abalone10.2'); X=textread('E:\datasets-orreview\...
  • 数据科学迷你项目 决策树回归,随机森林和...在应用机器学习算法之前,您必须执行以下任务:1)处理缺失值2)准备数据进行训练和测试3)应用决策树算法训练模型4)应用随机森林回归算法训练模型5)比较线性回归的精度。
  • 随机森林回归 建模 数据分析 matlab RF
  • 随机森林回归算法

    千次阅读 2019-11-20 16:48:11
    随机森林回归模型由多棵回归树构成,且森林中的每一棵决策树之间没有关联,模型的最终输出由森林中的每一棵决策树共同决定。 随机森林的随机性体现在两个方面: 1、样本的随机性,从训练集中随机抽取一定数量的样本...
  • 用不同的测试集训练模型,r^2评估指标得到的值差异较大;有时候可达到93%,有的时候只有87%。期间模型的参数、交叉验证的参数以及训练集和测试集的切分比例都是不变的。请问有什么办法可以稳定模型
  • 用Python实现随机森林回归

    万次阅读 多人点赞 2020-11-02 13:19:38
    这里就对如何进行随机森林回归在算法上进行概述,在参数上进行详述。希望对你的工作有所帮助。 这里,将介绍如何在Python中构建和使用Random Forest回归,而不是仅仅显示代码,同时将尝试了解模型的工作原理。 1.1 ...
  • 模型也是基于电商的一些历史数据进行销量的建模、预测。 2.获取数据 本数据是模拟数据,分为两部分数据: 训练数据集:data_train.xlsx 测试数据集:data_test.xlsx 在实际应用中,根据自己的数据进行替换...
  • python随机森林回归数据实战

    千次阅读 多人点赞 2020-11-12 11:51:53
    文章目录前言一、随机森林回归器参数介绍二、数据实战1.数据介绍2.重点代码2.1特征集和标签集获取2.2数据集划分2.3随机森林模型训练2.4预测结果可视化2.5 特征重要性选择及可视化3.完整代码总结 前言 我为什么写这...
  • 下表为训练数据集,特征向量只有一维,根据此数据表建立回归决策树。 在本数据集中,只有一个特征变量,最优切分变量自然是x。接下来考虑9个切分点{1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5},根据下式计算每个待切分...
  • 随机森林---python实现

    2018-04-17 20:01:26
    随机森林---python实现附加训练数据 随机森林就是由许多的决策树组成。每一颗决策树可能误差较大,但是综合在一起最后通过选举的方式产生的结果将非常准确。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,330
精华内容 12,132
关键字:

随机森林回归模型