在这个例子中,使用横梁
计算回归模型的平均误差的交叉验证估计。并行运行计算。
mypool = parpool()使用“本地”配置文件启动Parpool ...连接到2名工人。MyPool =具有属性的池:连接文件:{0x1 Cell} NumWorkers:2 idletimeout:30群集:[1x1 parallel.cluster.local] cenceletqueue:[1x1 parallel.requestqueue] spmded:1
opts = statset('deverpecallellel',true);加载('渔业');Y = MEAS(:,1);x = [尺寸(尺寸(y,1),1),meas(:,2:4)];Regf = @(xtrain,ytrain,xtest)(xtest * forgent(ytrain,xtrain));CVMSE = Crossval('MSE',X,Y,'Predfun',Regf,'选项',OPTS)CVMSE = 0.1028
这个简单的例子不是并行计算的好候选者:
%在序列中计算多长时间?Tic; CVMSE = Crossval('MSE',X,Y,'Predfun',Regf); TOC经过时间为0.073438秒。%并行计算多长时间?tic; cvmse = crossval('mse',x,y,'predfun',Regf,...'选项',选择); toc经过时间为0.289585秒。
跑步横梁
在可重复的方式并行,设置选项并适当地重置随机流(参见运行可重复的并行计算)。
mypool = parpool()使用“本地”配置文件启动Parpool ...连接到2名工人。mypool =具有属性的池:连接文件:{0x1小区} numworkers:2 idletimeout:30群集群:[1x1 parallel.cluster.local]请求正确:[1x1 parallel.requestqueue] spmdeabled:1 s = randstream('mlfg631_64');opts = statset('devalpeclellel',true,...'streams',s,'userubstreams',true);加载('渔业');Y = MEAS(:,1);x = [尺寸(尺寸(y,1),1),meas(:,2:4)];Regf = @(xtrain,ytrain,xtest)(xtest * forgent(ytrain,xtrain));CVMSE = Crossval('MSE',x,Y,'predfun',Regf,'选项',选择)cvmse = 0.1020
重置流:
RESET(s)cvmse = Crossval('MSE',x,Y,'predfun',Regf,'选项',OPTS)CVMSE = 0.1020