基于数据驱动的大气PM2.5遥感定量反演(二)

说明

随机森林模型在大气 PM2.5 遥感反演中得到了广泛的应用。随机 森林是一种集成算法,它属于 Bagging 类型,通过组合多个弱分类器,使得整体 模型的结果具有较高的精确度和泛化性能。它的基本思路如图 1 所示,现在假 设我们有一个训练集,它有 N 个训练样本,每个样本有 M 个特征,那么首先对 它进行有放回的抽样,得到若干个子集,再从训练样本中随机选择 m 个特征进 行树的构建,每个学习器产生一个预测值,最后的结果由投票或者平均产生。

𝑃𝑀2.5 = 𝑓(𝐴𝑂𝐷)


“PM2.5_AOD_matchpair.xlxs”为匹配好的 2015 年全国站点观测 PM2.5 和 AOD 数据。 “AOD_Wuhan.tif”为武汉市 2015 年 MODIS 传感器的 AOD 年均值数据 (GeoTIFF 格式;缺省值为-9999),包含地理信息。


流程

星地匹配:将卫星数据和地面站点观测进行空间上的匹配,根据站点经纬度计算对应栅 格坐标(每个栅格最多只包含一个站点),获取 AOD 值,为大气 PM2.5 遥感反演 模型的构建提供基础数据集; X 对应 AOD,Y 对应 PM2.5,都是样本数*1 的矩阵 本次实习已经提供匹配好的数据对,直接使用使用 geotiffread()函数读取 AOD 数据,使用 xlsread()函数读取 PM2.5 数据。

关系建模:首先划分数据集:前 70%训练,后 30%测试 接着调整树的数量,记录对应的精度,并且绘出精度图。 再找到测试集上最高精度对应的树的数量,使用该参数再训练模型。

时空制图:首先进行反演:利用拟合的模型婴应用到 tif 对应的区域,计算其所对应的 PM2.5 值。 再将计算的结果制图,得到和 AOD 对应的 PM2.5 的图。


代码

clear all;
clc;
%% 星地匹配
%数据读取
[AOD,R]=geotiffread('AOD_Wuhan.tif'); %AOD 为数据矩阵,R 为地理信息
info=geotiffinfo('AOD_Wuhan.tif');%info 可以辅助坐标转换
[num,txt,raw]=xlsread('PM2.5_AOD_matchpair.xlsx');%读取 PM2.5,num 为数字,txt 为文字,raw
为
X=num(:,5);Y=num(:,4);
%% 关系建模
%划分训练集和测试集
num=floor(length(X)*0.7); %前 70%的样本进行训练,后 30%的样本进行测试
X_train=X(1:num,:);
X_test=X(num+1:length(X),:);
Y_train=Y(1:num,:);
Y_test=Y(num+1:length(X),:);
%调参,选择随机森林“树的棵树”
%记录不同参数对应的精度
r_train=zeros(20,1);
r_test= zeros(20,1);
for n=1:20 %tree 的数量
 model_para = regRF_train(X_train,Y_train,n,1);
 %计算训练集和测试集的精度
 Y_fit=regRF_predict(X_train,model_para);
 Y_pre=regRF_predict(X_test,model_para);
 r_train(n)=corr(Y_fit,Y_train);
 r_test(n)=corr(Y_pre,Y_test);
end
plot(r_train,'r*');
hold on
plot(r_test,'b.');
%寻找最佳树的数量
best_n=1;
for i=2:20
 if r_test(i)>r_test(best_n)
 best_n=i;
 end
end
%训练随机森林模型
model = regRF_train(X_train,Y_train,best_n,1);%best_n 上步中的最佳参数
%% 时空制图
%反演
[row,col]=size(AOD);
pm=ones(row,col)*nan;
for m=1:row
 for n=1:col
 if AOD(m,n)==-9999 %缺失值跳过,对应 pm2.5 为 nan
 continue
 end
 x_=[1,AOD(m,n)];%常数项对应 1
 pm(m,n)= regRF_predict(double(AOD(m,n)),model); %计算反演值
 end
end
%制图
h=imagesc(pm); %pm 为反演得到的 PM2.5 浓度矩阵,示例里缺失值设为 nan
set(h,'alphadata',~isnan(pm)) ;
colorbar cool;%色带可以自行调整 例如:colorbar cool

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crazy小疯子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值