使用空间数据训练机器学习模型的实用工作流程

发布于:2025-07-23 ⋅ 阅读:(17) ⋅ 点赞:(0)

了解数据集

我的数据集的性质是驱动工作流程的一个重要因素。它高度不平衡,分布呈倾斜——我试图预测的事件很少发生,但一旦发生,其值可能非常极端。这会导致低频事件具有高影响,这种情况通常可以用泊松分布来描述。

鉴于此,我的流程可以分为三个主要阶段:

  1. 数据创建或预处理和构建
  2. 研究和数据准备
  3. 实验自动化

每个阶段都至关重要,需要采用结构化的方法来确保最终模型的良好性能。通常我会反复执行每个阶段和步骤几次,但通常我会按照每个步骤的顺序进行。以下是我处理每个步骤的详细步骤。

1. 数据创建

在此阶段,目标是生成具有不同配置的数据集,以确保后续的训练和测试的稳健性。在这里,我正在构建和预处理输入数据。怎么做呢?嗯:

  • 采样方法:我使用不同的目标值采样率创建了三个数据集(例如,目标值 = 0 与目标值 > 0)。这些采样率有助于管理数据集中的偏度和不平衡性。
  • 元数据包含:对于每个数据集,我都包含特征值和元数据,例如纬度、经度和位置的图块来源。这些附加信息对于以后的空间分析或调试至关重要。
  • 文件保存:我以不同的格式(如 CSV 或 Parquet)保存这些数据集,以确定哪种格式在大小和读/写性能之间提供最佳平衡。

这种结构化数据创建过程确保我有一个坚实的基础,特别是在使用这种不平衡的数据训练模型时。

2. 研究和数据准备

数据集创建完成后,重点转移到建模之前彻底理解数据。你需要了解你的数据,不应该将你不理解的数据输入模型。此外,作为数据科学家,你应该保证模型输入数据的干净高质量这一步对于发现任何可能影响模型训练或性能的问题至关重要。

  • 数据映射:我为每个训练数据集版本创建散点图,将数据点在地图上可视化,以评估它们的空间分布。这能让我快速识别任何聚类、间隙或异常值。
  • 特征可视化:我为每个特征创建单独的地图,并使用颜色编码来表示特征强度。这有助于识别特征内的地理模式。
  • 特征直方图:对于每个数据集,我会为所有特征生成直方图,以可视化它们的分布。此步骤会突出显示任何需要处理的异常或倾斜的特征分布。
  • 完整性检查:我使用诸如、和之类的方法df.describe()检查df.info()数据df.value_counts()中是否存在非物理值(例如,DEM 为 -32000,geomorphon 为 255)。这些值通常表示“无数据”情况,我会将其过滤掉,或者用更有意义的值(例如 0)替换它们。
  • 预处理函数:然后我创建一个函数和类来处理所有未来数据集的这种预处理,确保一致的清理。
  • 最终清理数据:处理完非物理值后,我会在清理后的数据集上重新生成地图和直方图。这些图和直方图现在反映了将直接输入模型的数据。
  • 特征评估:为了识别潜在的好特征或坏特征,我会对pd.cut()目标值进行分类,并创建按类别分组的直方图。这可以揭示某些特征在不同目标类别中是否具有不同的分布,从而深入了解它们的预测能力。我使用 Seaborn 的配对图 (pairplot)、散点图 (scaterplot) 来绘制每个特征与目标的对应关系,以及相关图(如果存在线性相关性)等。各种展示特征不同视角和情况的图表在这里都很有用。

3.实验自动化

此阶段的目标是简化实验流程。自动化实验不仅节省时间,还能确保不同试验的结果一致。

  • 实验脚本:我创建了一个脚本,每次运行只执行一个实验。每个实验生成的输出都保存在一个单独的文件夹中,以便于整理和比较。
  • 参数选择:每次实验开始时,脚本都会允许进行参数选择——包括使用哪个数据集版本、包含哪些特征以及是否应用某些选项(例如,排除海上位置)。此步骤内置了版本控制功能,通过跟踪数据集版本、特征选择和模型参数,确保我可以准确追溯每次实验中使用的参数。
  • 版本控制系统:我为每次实验都集成了一个版本控制系统。这包括:
    数据集版本控制:我会跟踪所用数据集的版本,以及所有转换或预处理步骤。每个数据集版本都经过标记并以结构良好的方式保存(例如,v1.0、v2.1),因此可以轻松地在未来的实验中重现相同的环境。
    脚本和模型版本控制:对模型架构、脚本逻辑或超参数的任何更改也都会进行版本控制。这使得跟踪不同的代码或参数调整如何影响模型性能成为可能。
    代码版本控制:不用说,我正在使用 git 来追踪所有内容。
  • 操作顺序:脚本(或jupyter Notebook)执行一系列自动化步骤:
    1. 加载选定的数据集及其版本
    2. 应用预处理步骤(例如,独热编码、缺失值处理)
    3. 训练模型
    4. 预处理测试数据集(使用与训练数据相同的方法)
    5. 进行预测并生成输出文件。
  • 输出可视化:地图和图表等可视化输出对于理解模型性能至关重要。每张地图都采用一致的比例尺生成,零值会以不同的颜色突出显示。这些可视化输出也进行了版本控制,以确保每个实验的结果与所使用的特定数据集和配置清晰关联。
  • 版本控制的输出存储:所有实验结果(从模型到地图)都存储在版本控制的目录结构中。这有助于避免覆盖或丢失先前的工作记录,并确保每个实验都具有可重复性。实验文件夹根据关键参数(例如数据集版本、特征选择等)命名,并带有时间戳,以便清晰易懂。
  • 实验跟踪与比较:我将所有实验元数据和结果以结构化格式存储,例如 Excel 文件或数据库。这包括数据集版本、特征选择、模型参数以及关键输出(例如性能指标、可视化效果)的详细信息。通过对这些信息进行版本控制,我可以轻松比较不同实验的结果,发现趋势并得出明智的结论。

此后,我对不同实验版本的情况一目了然。这样,我就能清楚地看到某些特征对结果的影响,并根据数据做出明智的决策,选择模型的输入。版本控制在这个过程中至关重要,不仅是为了跟踪变更,也是为了确保实验的可重复性。这样我就能避免覆盖或丢失过去的工作成果,这在长期项目中尤为重要,因为项目中会随着时间的推移进行多次实验。它确保每个变更都有记录且可追溯,从而极大地提高了我的模型训练工作流程的可靠性。

总结

使用空间数据训练机器学习模型面临诸多挑战。遵循系统化的工作流程——从数据创建和准备到实验自动化——可以更轻松地处理偏差和不平衡的数据,并取得有意义的进展。目标是减少人工干预,确保一致性,并在整个过程中做出数据驱动的决策。

我的这个系统显著提高了我的效率和模型性能,我希望它可以帮助其他在空间数据建模中面临类似挑战的人。


网站公告

今日签到

点亮在社区的每一天
去签到