在使用随机森林(Random Forest)进行空间预测建模时,首先需要明确任务类型:是分类问题还是回归问题。这两类模型的应用场景、输出形式及后续处理方式均有差异。
1. 随机森林的两种基本类型
分类随机森林(RandomForestClassifier)适用于目标变量为类别型的情况,例如:
- 0 = 不发生滑坡 / 不发生冲突
- 1 = 发生滑坡 / 发生冲突
这类任务关注的是“是否发生”或“属于哪一类别”,即判断事件的存在性或归属类别。
predict()
回归随机森林(RandomForestRegressor)则用于目标变量为连续数值的情形,比如:
- 某栅格单元内的死亡人数
- 某一区域的事件发生次数
- 某地经济损失金额
其核心在于回答“有多少”或“有多大”的问题,输出结果为实数。
RandomForestRegressor
2. 分类随机森林的输出形式
分类模型提供两类主要输出:类别标签和类别概率。
2.1 类别标签输出 —— 给出最终判断结果
predict(X)
该输出直接返回每个样本所属的类别,如二分类中返回 0 或 1;多分类中返回 A/B/C 等。
举例说明:
设定 0 表示“不发生滑坡”,1 表示“发生滑坡”。
y_pred = clf.predict(X)
模型可能输出如下结果:
[0, 0, 1, 1, 0, 1, ...]
表示:
- 第 1 个样本:预测为“不发生”
- 第 3 个样本:预测为“会发生”
特点:
这是模型做出的最终决策结果。若将此结果写入栅格数据,则生成一张典型的 分类图,显示每个位置的状态为“发生”或“不发生”。
2.2 类别概率输出 —— 提供置信水平
predict_proba(X)
对于二分类任务,模型可输出每个类别的预测概率。
probs = clf.predict_proba(X)
probs
每一行包含两个数值,对应两个类别的概率估计。
[ [0.9, 0.1], [0.3, 0.7], [0.2, 0.8], ... ]
假设类别顺序为:
[0, 1]
那么第一行:
[0.9, 0.1]
意味着:
- P(类别0) = 0.9 → 不发生的概率为 90%
- P(类别1) = 0.1 → 发生的概率为 10%
通常我们更关注“发生”这一类的概率,即第二列:
p_event = probs[:, 1] # 发生滑坡/冲突的概率
例如得到:
[0.1, 0.7, 0.8, 0.05, ...]
特点:
输出值介于 0 到 1 之间,可解释为“该位置发生事件的可能性”或“风险程度”。
若将这些概率值赋给点要素,并转换为栅格,即可生成一幅 风险概率图,非常适合用于可视化风险分布或制作热度图。
可以这样理解两者区别:
predict() = 模型给出明确判断:发生 / 不发生(0/1)
predict_proba() = 模型表达信心程度:发生的可能性是 0.8 还是 0.2
在空间风险制图实践中,通常更推荐使用概率输出
predict_proba
来构建地图,因其能反映不确定性与渐变趋势。
3. 回归随机森林的输出特性
reg = RandomForestRegressor(...) y_pred = reg.predict(X)
回归模型的目标是预测连续数值,因此其输出本身就是实数,无需概率解释。
例如:
- 预测某栅格的冲突事件次数:0.3 次、2.7 次、5.1 次
- 预测死亡人数:0.0 人、12.5 人、3.2 人
这里的
predict()
即为所需的预测值,具有自然的连续性。
关键区别总结:
- 分类 RF 输出离散值,如
得到 0/1 或 A/B/Cpredict() - 回归 RF 输出连续值,如
得到 3.7、10.2 等predict()
注意:
回归模型一般不存在
predict_proba()
因为回归不涉及类别概率的概念,而是直接拟合目标数值。
4. 应用于你的建模流程:如何选择?
结合你当前的流程:“因子栅格 → 转点 → 提取多因子 → 训练RF → 写回prediction → 转栅格”:
情况一:标签为 0/1(有事件 / 无事件)
这属于分类问题。
建议做法:
- 使用
RandomForestClassifier
predict_proba(X)
获取每个点(或像元)的“发生概率”(取类别1对应的那一列)
prediction
字段,再转为栅格
最终结果:
每个像元对应一个 0–1 的概率值,可用于表述“此处发生事件的概率为 0.73”。
情况二:标签为连续数量(如事件次数、死亡人数等)
这属于回归问题。
操作步骤:
- 采用
RandomForestRegressor
predict(X)
获取连续预测值
prediction
字段并转换为栅格
最终结果:
每个像元表示“预测的事件次数”或“死亡人数”等具体数值。
5. 总结一句话
分类随机森林:
predict()
提供类别结果(0/1),适合绘制“发生 / 不发生”图。
predict_proba()
提供类别概率(0–1),适合制作“风险概率图”。
回归随机森林:
仅有predict()
直接输出连续数值(强度、次数、损失等),适合生成“强度分布图”。

雷达卡


京公网安备 11010802022788号







