新闻详情

新闻详情

首页 / 资讯中心 / 详情

随机森林建模及反演流程(遥感影像)

发布时间:2026/9/8 16:58:25来源:尧图网络
随机森林建模及反演流程(遥感影像)
随机森林建模及反演流程遥感影像代码下载​自助下载→方式一顶部专栏https://blog.csdn.net/weixin_45276304/article/details/164451286?spm1001.2014.3001.5502方式二数据下载列表来源GISer资料库​我把上一步导出来的表格放在了 E:\xianyu\landsat反演盖度和可食牧草产量\jianmo\样本\图斑样本路径下。下面我们搜索anaconda prompt打开并输入E:(这里我数据放在E盘下所以输入E,如果你是放在F盘那就是输入F)意思是进入E盘然后采用cd命令进入我们存放样本和代码的路径下输入jupyter notebook打开python的编辑器它会自动弹出以网页的形式注意不要关闭这个黑窗。如何运行下面是对代码的详细介绍1.数据导入与准备首先我们需要导入必要的库并读取数据文件。以下是详细步骤importpandasaspd# 导入用于数据处理的pandas库importnumpyasnp# 导入用于数值计算的numpy库frommatplotlibimportpyplotasplt# 导入用于绘图的matplotlib库fromsklearn.ensembleimportRandomForestRegressor# 导入随机森林回归模型fromsklearn.model_selectionimporttrain_test_split# 导入数据集拆分工具fromsklearn.metricsimportmean_squared_error,r2_score# 导入误差计算和R²评分工具fromsklearnimportmetrics# 导入额外的度量工具读取表格数据我们有一个CSV文件new_yb0.csv其中第一列是目标变量即我们要预测反演的变量其余列是特征变量即用于预测的指标。我们使用pandas库读取该文件# 读取表格数据, 将excel另存为csv文件datapd.read_csv(r./new_yb0.csv,na_values[ ])# 读取CSV文件空值处理为NaNydata.iloc[:,0].values# 提取第一列作为目标变量Xdata.iloc[:,1:].values# 提取其他列作为特征变量#X data[[dem, b4_ronghe, gcvi, gndvi, isr2]].valuesdfpd.DataFrame(data)# 将数据转换为DataFrame格式分割数据集为了评估模型的性能我们将数据集拆分为训练集和测试集random_forest_seednp.random.randint(low1,high230)# 生成随机种子# 分割数据集为训练集和测试集比例为7:3X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_staterandom_forest_seed)2.构建并训练随机森林模型接下来我们构建一个随机森林回归模型并对训练集数据进行训练# 初始化随机森林回归器设置树的数量为600最大特征数为8这个您可以自行改动regressorRandomForestRegressor(n_estimators600,max_features8)regressor.fit(X_train,y_train)# 使用训练数据拟合模型模型误差分析我们可以通过绘制误差分布图来观察模型的误差情况如果绘制的图像呈现正态分布说明模型很好# 预测测试集数据random_forest_predictregressor.predict(X_test)# 计算预测误差random_forest_errorrandom_forest_predict-y_test# 绘制误差分布直方图plt.figure(1)plt.clf()plt.hist(random_forest_error)plt.xlabel(Prediction Error)plt.ylabel(Count)plt.grid(False)plt.show()精度验证通过计算R²值和均方根误差RMSE来评估模型精度random_forest_R2metrics.r2_score(y_test,random_forest_predict)random_forest_RMSEmetrics.mean_squared_error(y_test,random_forest_predict)**0.5print(R^2 {0} and RMSE {1}..format(random_forest_R2,random_forest_RMSE))3.变量重要性分析随机森林模型能够评估每个特征在预测中的重要性。我们可以绘制重要性图来直观地显示前20个最重要的变量# 计算变量重要性random_forest_importancelist(regressor.feature_importances_)# 选择前20个重要变量random_forest_feature_importance[(feature,round(importance,9))forfeature,importanceinzip(df.columns[1:],random_forest_importance)]# 按重要性排序random_forest_feature_importancesorted(random_forest_feature_importance,keylambdax:x[1],reverseTrue)# 提取变量名和重要性x_data[item[0]foriteminrandom_forest_feature_importance[:20]]y_data[item[1]foriteminrandom_forest_feature_importance[:20]]# 设置图表大小plt.figure(figsize(16,10))# 绘制柱状图plt.bar(x_data,y_data)# 设置横轴标签plt.xlabel(Variable,fontsize16)plt.xticks(rotation-90,fontsize16)# 设置纵轴标签plt.ylabel(Importance,fontsize20)# 设置标题plt.title(Variable Importances,fontsize16)# 显示图表plt.show()4.栅格数据预测最后我们将使用训练好的随机森林模型对栅格数据进行预测。这里我们根据变量重要性分析重新选择了前5个重要的变量把代码X data.iloc[:, 1:].values 改为 X data[[‘dem’, ‘b4_ronghe’, ‘gcvi’, ‘gndvi’, ‘isr2’]].values 然后从头开始运行代码读取这5个变量即可实现研究区反演我们将对这些数据进行反演预测importrasterio# 导入栅格数据处理库fromtqdmimporttqdm# 导入进度条显示库# 读取栅格数据withrasterio.open(r./dem.tif)assrc:data1src.read(1)metasrc.metawithrasterio.open(r./b4_ronghe.tif)assrc:data2src.read(1)withrasterio.open(r./gcvi.tif)assrc:data3src.read(1)withrasterio.open(r./gndvi.tif)assrc:data4src.read(1)withrasterio.open(r./isr2.tif)assrc:data5src.read(1)# 整合栅格数据为一个矩阵Xnp.stack((data1,data2,data3,data4,data5),axis-1)# 清洗输入数据X_2dX.reshape(-1,X.shape[-1])print(np.isnan(X_2d).any())# 检查数据中是否存在NaN值# 将NaN值替换为0X_2d[np.isnan(X_2d)]0# 使用训练好的模型进行预测y_pred[]foriintqdm(range(0,X_2d.shape[0],10000)):y_pred_chunkregressor.predict(X_2d[i:i10000])y_pred.append(y_pred_chunk)y_prednp.concatenate(y_pred)# 保存预测结果为新的栅格数据withrasterio.open(r./建模变量.tif,w,**meta)asdst:dst.write(y_pred.reshape(X.shape[:-1]),1)print(预测结束)运行过程会产生一个进度条进度条走完代表反演结束自助下载→方式一顶部专栏https://blog.csdn.net/weixin_45276304/article/details/164451286?spm1001.2014.3001.5502方式二数据下载列表来源GISer资料库
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

接口设计全流程指南:用PostIn把接口文档变成开发契约 2026/9/8 17:40:30

接口设计全流程指南:用PostIn把接口文档变成开发契约

PostIn用了半年多,我发现很多团队把它当Postman的替代品来用,只用了“调试”就完事了,特别可惜。实际上PostIn真正拉开差距的是把接口设计、接口文档、Mock、自动化测试串成了同一条流水线,接口只需要定义一次,后续全链…

阅读更多 →
免费PS3模拟器RPCS3:从下载到玩上第一局的完整路径 2026/9/8 17:40:30

免费PS3模拟器RPCS3:从下载到玩上第一局的完整路径

免费PS3模拟器RPCS3:从下载到玩上第一局的完整路径 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 RPCS3是一款开源免费的PS3模拟器,让普通PC运行原版PS3游戏,…

阅读更多 →
干痒、结节、经期乱?中医AI拨云见日:不是燥火而是虚寒 2026/9/8 17:40:30

干痒、结节、经期乱?中医AI拨云见日:不是燥火而是虚寒

生活里不少年轻女生都有这种 “说大不大、说烦挺烦” 的困扰:整个人天天没精神,肚子动不动就胀气,月经忽前忽后没个准日子,乳房摸着还有结块,总忍不住长叹气,嘴唇干得厉害,喝多少水都不解渴&…

阅读更多 →
全网都在问舌头,不如用“看舌头”自己监测 2026/9/8 17:40:30

全网都在问舌头,不如用“看舌头”自己监测

打开小红书、抖音、B站,随便一搜“舌头”,满屏都是伸着舌头的自拍和“老师,帮我看看”的求助帖。舌诊——这个中医“望闻问切”里门槛最低的一环,正被手机摄像头无限放大。但很多人拍完舌头、发完帖子,等来的往往是各路…

阅读更多 →
手写迷你操作系统内核:从引导扇区到进程调度全记录 2026/9/8 17:40:30

手写迷你操作系统内核:从引导扇区到进程调度全记录

山水观心操作系统(Shanshui-guanxin)是我最近一年主要投入的一个学习型项目。它不是又一个 Linux 发行版,也不是拿现成内核改个名字的玩具,而是从引导扇区开始,用汇编和 C 一行一行写出来的微型操作系统内核。整个项目…

阅读更多 →
批量生成二维码工具实用指南:颜色、Logo与格式避坑 2026/9/8 17:37:30

批量生成二维码工具实用指南:颜色、Logo与格式避坑

最近在给一批产品做溯源标签,一个订单十几个SKU,每个SKU都要独立二维码,还要把品牌Logo放上去、颜色统一成品牌绿。最开始我开了五个在线网页生成器,一个链接一个链接地粘贴,结果做到第三个就发现光复制粘贴就快疯了&a…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞