1 实习目的

了解机器学习算法在现代社会中的应用。

2 实习准备

Anaconda环境配置;ArcGIS软件安装;Jupyter lab环境配置。

3 实习内容

用LightGBM模型进行训练并调参,得到最优模型,生成权重层,在ArcGIS进行人口空间化,生成张家湾的100m格网的人口空间分布数据。

4 实习过程

1RF机器模型训练及权重层的生成

配置环境:打开Anaconda Prompt,输入conda create -n Yinglai python=3.11,创建一个新的Python环境。作为初学者的我们而言,学会干净的环境配置很重要,确保你的路径配置中没有中文路径,否则会报非法字符警告

图1 Python环境配置

继续输入conda activate Yinglai,激活Python环境。按照pip install package的形式来对相关的包numpy,gdal,sklearn,pandas,openpyxl,lightgbm,jupyter lab。注意:numpy要安装小于2.0的版本,这里我安装的是1.25.0版本的。因用于训练的模型与高版本的numpy包不兼容。Gdal包需要复制一份都环境路径下,再安装才能安装成功。

图2 Python包下载

继续输入jupyter lab,在下方找到链接,可贴到浏览器打开jupyter的编辑器。

图3 打开jupyter

界面如上,我们点击notebook,新建代码,将准备好的随机森林代码贴上去。

图4 jupyter界面

图5 jupyter代码运行界面

此处需要将代码的文件路径替换到个人的文件目录下,有个小问题需要注意,如果运行的代码过程中出现了非法字符的报错问题,就像下图,那我们可以在代码中加上一段创建临时存储文件地址的代码,一般问题可以解决。

图6 代码报错问题

图7 解决方案

运行代码,得到评分约为0.942,已经算是不错的评分了。

图8 RF模型训练结果

接下来,我们在jupyter中运行权重层代码即可,生成权重层tif文件即可。

图7 RF模型生成的权重层

(2)LightGBM模型训练、调参与权重层生成

按照代码默认给的参数运行,发现评分为0.90左右,因此我们需要对LightGB模型进行调参,以确保模型得到优化的输出结果。

LightGBM模型的调参相对复杂些,涉及到的参数比较多,调参过程我们参照以下技术文档:https://www.cnblogs.com/bjwu/p/9307344.html

以“max_depth”和“num_leaves”为例,先粗调,通过设置参数搜索空间和交叉验证的方式来看到底哪个参数是最优的组合。

图8 调参过程1

通过运行代码,我们发现“max_depth=3”和“num_leaves=50”的时候,能够得到最优的地分数值。

图9 评分结果1

接下来,我们来细调,可以将max_depth在3附近多取几个值,num_leaves在50附近多取几个值。

图10 调参过程2

图11 评分结果2

从这里我们发现,“max_depth=3”和“num_leaves=38”的时候,能够得到最优的地分数值。我们再以“num_leaves=38”为中心,来进行选值,如此往复。最后发现“max_depth=3”和“num_leaves=4”的时候,能够得到最优解。

其他参数的过程与上面类似。最终我们确定好了相关的最终参数(图12),评分上升至0.93左右,相较于RF模型,还是弱了些。基于此,我们再次运行权重层代码,得到新的tif文件。

图12 参数最终及评分结果

图13 权重层生成结果

(3)ArcGIS生成人口密度网格

打开ArcMap10.8,加载两次机器模型训练的权重层栅格,以及张家湾shp边界。

图14 ArcGIS加载界面

按照空间分析工具→区域工具→以表格显示分区统计的步骤,打开工具,输入矢量边界和赋值栅格,在统计类型中选择SUM方式,得到栅格数据在区域的的总和。

图15 打开工具1

打开输出结果,赋值SUM值,再按照空间分析工具→地图代数→栅格计算器,打开后,输入公式:Float(“权重栅格”)/ Float(“SUM”),得到新的结果。

图16 打开工具2

按照转换工具→转为栅格→面转栅格步骤,打开工具,输入矢量要素,将值字段改为Quantity,优先级字段改为Quantity,像元大小为100。这样,我们将得到一个100m空间分辨率的面状栅格,栅格上的值都是矢量边界的人口数。因此,只需要知道每个网格上的人口权重分布概率就行。

图17 打开工具3

再次打开栅格计算器,输入公式:Float(“矢量栅格”)*Float(“概率分布栅格”)。最终,我们将得到基于机器学习模型预测的人口密度分布栅格。

图18 打开工具4

图19 文件夹得到的数据结果

参照上述步骤,同样对RF模型预测的权重层进行处理,便能够得到基于随机森林预测的结果。

图20 最终的人口密度结果

图21展示了两种算法预测的结果,两种机器学习的算法预测的人口分布格局基本保持一致,但在细节上略有差异,比如随机森林模型预测在张家湾地区的南部区域存在人口分布的高值区域,而Light_GBM模型预测值相对较低;此外,两种模型预测出来的结果中,Light_GBM模型的极大值和极小值相对较低。

图21 模型预测的人口密度栅格对比结果

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐