深部残差神经网络包装库

baggingrnet的Python项目详细描述


baggingrnet:深部残余神经网络的bagging库

简介

这个包提供了用于深度残差神经网络(baggingrnet)打包的python库。当前版本只支持Keras的深度学习包,并将在未来扩展到其他版本。本软件包提供了以下功能:*模型multbagging:基于深度剩余网络的自动编码器的主要类到并行打包。你可以设置它的最佳效果。有关详细信息,请参阅类及其成员函数的帮助。 resautoencoder:基于深度残差网络的自动编码器基本模型的主要类。详情请看具体情况。ensprediction:主要的类到系综预测和独立测试的可选评估。 *util p metrics:主要指标包括rsquare和rmse等。

  • 数据数据:访问两个样本数据的功能,通过bagging测试和演示多个模型的并行训练和预测。simdata:模拟数据集进行测试的函数。

软件包的安装

  1. 对于最新版本,您可以使用以下命令直接安装此软件包:

      pip install baggingrnet  
    
  2. 您还可以克隆存储库,然后安装:

     git clone --recursive https://github.com/lspatial/baggingrnet.git
     pip install ./setup.py install 
    

建模框架

该模型建立在基于编解码的深度残差多层感知器(mlp)的编解码自动编码的基础上。利用编码层到解码层的残差连接来提高学习效率,利用bagging来实现具有不确定性度量(标准差)的稳定和改进的集成预测。

相关论文将在此处发布并在发布后更新。

示例1:模拟数据的回归

数据集的模拟公式如下:frombaggingrnet.dataimportdatasim_train=data('sim_train')sim_train['gindex']=np.array([iforiinrange(sim_train.shape[0])])

knitr::kable(py$sim_train[c(1:5),],format="html")
<表><广告>< >< > X1 < > X2 < > X3 < > X4 < > X5 < > X6 < > X7 < > X8 < > Y < > 全球指数 < /广告><正文> 九千八百四十二 六十九点五九八九三 六点三六八六九六 五点九五零七二零 九十七点九七六九八 八十一点七七六七零 三十八点一二五七八 三十八点七一零二三 一百二十四点九零五七八 一百六十八点七六九七四四八 零 二千五百一十三 八十八点八三五八零 四十七点六一九三八五 八点一零七三四八 二十三点九五三八九 四十一点零零三零零 二百五十六点七五三一九 二百零三点七五七五九 一百四十六点七九零四零 一百八十四点八四七二二一二 一 九千一百一十六 六十五点三二六六四 四十九点四七三六七九 五点九八二四一八 七十五点九九四零一 八十点五六二七五 八百四十九点四八四三五 二百零四点五二一三七 一百六十一点六一七零五 -44 4.539064 二 二千六百七十三 二十一点七二八二七 六十四点九四六六八零 二点五九二三四八 七十点三二零六七 四十二点二七八二四 三百八十七点四二零六零 十三点一五八五二 八十八点四七八七七 -1663553631 三 五千六百零七 六十九点四五三一七 十八点八一一六四八 五点六二四三七三 三十九点八一八三五 八十四点八零四四六 三百三十三点四三八一一 八十九点二二五九一 七十七点二五一五五 -0.4054 四 <表> ######2)设置装袋路径,预测器名称列表,获取装袋类实例,输入数据:
# Load the major class for parallel bagging trainingfrombaggingrnet.model.baggingimportmultBaggingfeasList=['x'+str(i)foriinrange(1,9)]#List of the covariates used in training target='y'# Name of the target variable bagpath='/tmp/sim_bagging/res'# Path used to chkpath(bagpath)mbag=multBagging(bagpath)mbag.getInputSample(sim_train,feasList,None,'gindex',target)
3)定义模型的参数并将其附加到建模职责列表中:
name=str(0)# model name as unique identifier nodes=[32,16,8,4]# List of number of nodes for the encoding and coding layers, adjustable optionally; minibatch=512# Size for mini batch isresidual=True# Whether to use residual connections in the model nepoch=200#Number of epoches sampling_fea=False# Whether to bootstrap the predictors/features noutput=1# Number of the output node islog=False# Whether to make the log transformation # The following is to add the model's arguments to the list of duties. mbag.addTask(name,noutput,sampling_fea,nepoch,nodes,minibatch,isresidual,islog)
4)开始培训:
mbag.startMProcess(1)

在这里,一个模型只使用一个核心。

5)使用训练模型的预测和对训练模型的可选评估:
frombaggingrnet.model.baggingpreimportensPrediction# Load the test dataset sim_test=data('sim_test')sim_test['gindex']=np.array([iforiinrange(sim_test.shape[0])])# Generate the unique id for merging the predicitons of multiple models # Setup the path and target variable  prepath="/tmp/sim_bagging/res_pre"chkpath(prepath)#Load the prdiction classmbagpre=ensPrediction(bagpath,prepath)#Load the test data mbagpre.getInputSample(sim_test,feasList,'gindex')#Start to make predictions for multiple trained models. mbagpre.startMProcess(1)#Obtain the ensemble predictions from those of multiple models and optional evaluation of the models. mbagpre.aggPredict(isval=True,tfld='y')

以上五个步骤说明了加载数据、训练、测试和预测的过程。为了与残差模型的结果进行比较,下面的代码将获得非残差模型的结果。

mbag.removeTask(name)bagpath='/tmp/sim_bagging/nores'chkpath(bagpath)mbag_nores=multBagging(bagpath)mbag_nores.getInputSample(sim_train,feasList,None,'gindex','y')isresidual=False# This is to set no use of residual connections in the models. mbag_nores.addTask(name,noutput,sampling_fea,nepoch,nodes,minibatch,isresidual,islog)mbag_nores.startMProcess(1)prepath="/tmp/sim_bagging/nores_pre"chkpath(prepath)mbagpre=ensPrediction(bagpath,prepath)mbagpre.getInputSample(sim_test,feasList,'gindex')mbagpre.startMProcess(1)mbagpre.aggPredict(isval=True,tfld='y')

残差模型和非残差模型的训练/学习曲线比较:

 src=

残差模型和非残差模型独立检验的比较:性能(r2和rmse)

  pip install baggingrnet  
0

独立测试中残差模型与非残差模型的分散性比较:

 src=

例2:pm的时空估计2.5

该数据集是京津唐地区2015年pm2.5及相关协变量的真实数据集。由于数据安全原因,它添加了小高斯噪声。

1)加载输入数据:

这里使用pm2.5数据集来测试建议的方法。

  pip install baggingrnet  
1 <表><广告>< >< > 地点 < > 站点名 < > 城市 < > 朗 < > 拉特 < > PM25\DAVG < > ELE < > PRS < > 透射电镜 < > 钌 < > 赢 < > AOD < /广告><正文> 二万三千一百二十三 1010A 附带条件 特技 一百一十六点二三零零 四十点一九五二 六点八零零零零 五十七 一千零七点七零九 二十点零八五九八五二 零点七六零九九五二 十七点三九四二七 零点二八七七三七二 一千三百三十九 1014A 临时帐篷 特惠 一百一十七点一九三零 三十九点一七三零 八十四点五九零九一 八点五 一千零二十一点八五九 -0.28 94622 零点六五六五一四一 四十点六一二九六 零点二二四五六二五 一万一千八百四十三 1062A 小精灵 抵押权 一百一十七点九六六四 四十点九一六一 二十一点二七二七三 三百六十二 九百六十九点八七六 十五点三零九二三六五 零点五二八八零七一 十六点六一六八三 零点四二七二八三一 九千三百七十三 小精灵 京南榆垡、京南域 特技 一百一十六点三零零零 三十九点五二零零 十二点零八六九六 十八 一千零一十三点一一六 十四点零零八五九七四 零点八一零零七六八 三十九点四六零七九 零点五零七五八五九 一万九千五百九十六 1069A 投资方特惠 特赦 一百一十六点七一五零 三十九点五五七一 六十四点二零八三三 三十五 一千零五点二四九 二十四点四九六零四九九 零点八六零四零四七 十四点零一零四八 一点五一四九三九一 <表> ######2)设置装袋路径,预测器名称列表,获取装袋类实例,输入数据:
  pip install baggingrnet  
2
  pip install baggingrnet  
3
  pip install baggingrnet  
4
  pip install baggingrnet  
5
3)定义多个模型(这里是100个模型)的参数,并将它们附加到建模职责列表中:
  pip install baggingrnet  
6
4)开始培训:

使用10核启动并行程序

  pip install baggingrnet  
7
5)使用训练模型的预测和对训练模型的可选评估:
  pip install baggingrnet  
8

最后,得到以下结果。

结果如下所示:

1)非残差与残差模型的典型学习曲线如下所示:

 src=

2)独立数据集的多个非残差与残差模型预测的平均性能(r2和rmse):

 src=

3)基于独立数据集多个模型的集合预测的性能(r2和rmse):
  pip install baggingrnet  
9
4)非残差与残差模型集合预测的散点图:

 src=

5)集合预测与单个模型预测的比较:

对多个模型的预测和集合预测的性能进行了统计。下面显示r2和rmse、条形图和散点图。

性能数字:

 git clone --recursive https://github.com/lspatial/baggingrnet.git
 pip install ./setup.py install 
0

与单一模型相比,箱形图通过套袋(6%的r2和-5.72μg/m3)显示出显著的改善。

 src=

以下是观测到的pm2.5与集合预测/残差的散点图:

 src=

联系人

对于本图书馆及其相关的完整应用,欢迎与李连发博士联系。电子邮件:lspatial@gmail.com或lilf@lrees.ac.cn

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有x86javapath的x64机器上x86java上的java JNI未满足链接错误   java将Pixmap的一部分上传到GPU   图像Java位图RLE8格式   java Android studio谷歌广告崩溃应用程序   java如何创建包含未知数量对象的变量?   Java计算给定int数组的所有可能组合   java JDBC classnotfound异常   httpclient中的java将HttpEntity转换为字符串的最优雅/正确的方法是什么?   如何从Java程序运行nano?   java在安卓中调用自定义类/方法   调用方法和JOptionPane后,允许代码继续执行所需的java计时器或其他想法   关于侦听器的向量Java并发问题   线程池执行器Java线程池   java配置DTO上的Swagger javax验证约束   Java中用于按钮功能的swing操作命令   ServletOutputStream中的java设置状态代码   java打印输入数组的平均值