光栅数据回归树的实现方法——python

光栅数据回归树的实现方法——python,python,regression,weka,raster,landsat,Python,Regression,Weka,Raster,Landsat,我试图用python在一些光栅数据上构建并实现回归树算法,但似乎找不到最好的方法。我将尝试解释我试图做的事情: 我想要的输出是光栅图像,其值表示湖泊深度,称之为depth.tif。我有一系列的光栅图像,每个都代表不同陆地卫星波段的反射率值,比如[B1.tif,B2.tif,…,B7.tif],我想用它们作为预测湖泊深度的自变量 对于我的训练数据,我有一个约6000个已知湖泊深度点的形状文件。为了创建一棵树,我提取了每个点对应的反射率值,然后将其导出到表中。然后,我在机器学习软件weka中使用该表

我试图用python在一些光栅数据上构建并实现回归树算法,但似乎找不到最好的方法。我将尝试解释我试图做的事情:

我想要的输出是光栅图像,其值表示湖泊深度,称之为depth.tif。我有一系列的光栅图像,每个都代表不同陆地卫星波段的反射率值,比如[B1.tif,B2.tif,…,B7.tif],我想用它们作为预测湖泊深度的自变量

对于我的训练数据,我有一个约6000个已知湖泊深度点的形状文件。为了创建一棵树,我提取了每个点对应的反射率值,然后将其导出到表中。然后,我在机器学习软件weka中使用该表创建了一个600分支的回归树,该回归树将根据反射值集预测深度值。但由于树太大,我无法用python手动编写它。我遇到了pythonweka包装器模块,因此我可以在python中使用weka,但是我一直在使用整个光栅部分。由于我的数据有一个额外的维度(如果转换为数组,每个自变量实际上是一组ncolumns x nrows值,而不是像所有示例中那样的一行值),我不知道它是否可以实现我想要的功能。在所有weka python包装器的示例中,我都找不到一个处理空间数据的包装器,我想这正是让我讨厌的地方

为了澄清,我想使用训练数据(现在是一个点形状文件/表格,但如果必要,可以转换为与反射光栅大小相同的光栅,除了我已知的几个点深度数据外,所有单元格中都没有数据),建立回归树,使用反射光栅预测深度。然后我想把这棵树应用到同一组反射光栅上,以获得到处都有预测深度值的光栅

我意识到这是令人困惑的,我可能没有做最好的解释工作。除了尝试在python中实现weka(如sklearn)之外,我还可以选择其他选项,只要它们是开源的。我的问题是,我所描述的可以做到吗?我很确定它可以,因为它非常类似于图像分类,除了目标值(深度)是连续的,而不是离散类,但到目前为止我失败了。如果是的话,什么是最好的/最直接的方法和/或有任何可能有帮助的例子


感谢

我有一些使用陆地卫星数据预测土壤环境特性的经验,这似乎与您上面描述的问题有些关联。虽然当时我开发了自己的模型,但我可以描述我为了绘制预测数据而经历的一般过程

对于训练数据,我能够提取已知土壤样本采集的空间点的陆地卫星值(以及其他属性)。这样,我就可以使用陆地卫星数据作为预测环境数据的输入。该数据的一部分也将保留用于测试,以确认经过训练的模型没有过度拟合训练数据,并且能够很好地预测输出

一旦该过程完成,就可以通过获取所需区域每个点的空间信息(匹配所需图像的分辨率)来绘制所需区域。从那里,您应该能够将这些陆地卫星因子输入到模型中进行预测,并输出用于绘制预测深度的地图。在本例中,您可能只需使用Weka预测所有情况,然后使用另一个工具根据您的估计构建地图

我相信我很久以前就编写了一些代码来提取ArcGIS中的每个必需因子,但我已经有一段时间没有这么做了。应该有一些很好的教程可以帮助你在这方面


我希望这对您的特殊情况有所帮助。

听起来您没有使用任何空间信息来构建树 (例如关于相邻像素的信息),只是反射。所以,你可以 将决策树应用于像素,就像所有像素都在一个区域中一样 一维列表或数组

6000点训练数据文件的600分支树似乎是 过度肥胖。考虑一个需要树停止分裂的选项 当节点或类似节点上的点少于N个时。可能有 也可以设置一个修剪因子。您可以测试不同的设置 直到你找到一个能从交叉验证或 伸出的测试集