随机森林分类VS回归

1. 先区分两种 Random Forest:分类 vs 回归

🟢 分类 RF(RandomForestClassifier)

  • 目标变量是 类别,比如:

    • 0 = 不发生滑坡 / 不发生冲突

    • 1 = 发生滑坡 / 发生冲突

也就是 "有 / 没有"、"属于哪一类"。

🔵 回归 RF(RandomForestRegressor)

  • 目标变量是 连续数值,比如:

    • 某栅格格点的死亡人数

    • 某格点的事件次数

    • 某处经济损失的金额

也就是 "有多大 / 有多少" 这种量。


2. 分类 RF:predict() vs predict_proba()

2.1 predict(X) ------ 给你"类别结果"

  • 输出是:0 或 1(或者多个类别 A/B/C)

举个例子:

你用的是二分类:0=不发生滑坡,1=发生滑坡。

y_pred = clf.predict(X)

可能得到:

[0, 0, 1, 1, 0, 1, ...]

意思就是:

  • 第 1 个样本:模型判断"不发生"

  • 第 3 个样本:模型判断"会发生"

特点:

  • 这是模型最终"下决定"的结果。

  • 如果你把这个直接写进栅格,地图上就是 0/1 的 分类图(发生/不发生)。


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(不发生的概率 0.9)

    • P(类别1) = 0.1(发生的概率 0.1)

我们最常用的是 "发生"这一类的概率,也就是第二列:

p_event = probs[:, 1] # 发生滑坡/冲突的概率

比如得到:

[0.1, 0.7, 0.8, 0.05, ...]

特点:

  • 输出是 0--1 之间的连续值,可直接理解为:

    👉"这个位置发生事件的概率/风险大小"

  • 如果你把它写回点 → 再转栅格,就是一幅 风险概率图,非常适合做 0--1 的风险图、热度图。

你可以这样理解:

  • predict() = 模型帮你"拍板":发生 / 不发生(0/1)

  • predict_proba() = 模型告诉你它的"信心":发生的可能性是 0.8 还是 0.2

在空间风险制图里,一般 更喜欢用 predict_proba 的结果 来做图。


3. 回归 RF:只有 predict()(没有概率)

回归模型(RandomForestRegressor)的目标是一个连续值:

reg = RandomForestRegressor(...) y_pred = reg.predict(X)

举例:

  • 你训练的是 "某栅格的冲突事件次数"

    • 输入一堆因子 → 输出可能是:0.3 次、2.7 次、5.1 次...
  • 或者 "死亡人数"

    • 预测结果可能是:0.0、12.5、3.2 ...

这里的 predict() 就是你想要的"数值预测结果",本身就是连续的。

典型区别:

  • 分类 RF:predict() 给 0/1、A/B/C(离散)

  • 回归 RF:predict() 给 3.7、10.2 这种连续数

注意:

回归 RF 一般 没有 predict_proba(),因为回归本身就不是"概率意义的分类",而是直接预测数值。


4. 跟你这套流程的关系(帮你选用哪个)

结合你现在这套"因子栅格 → 转点 → 提取多因子 → RF → 写回 prediction → 转栅格"的流程来看:

如果你的标签是 0/1(有事件 / 无事件):

  • 这是 分类问题。

  • 推荐做法:

    1. 用 RandomForestClassifier 训练模型;

    2. 用 predict_proba(X) 得到每个点/像元的 发生概率(取类别 1 的那一列);

    3. 把这个概率写到 prediction 字段 → 再转成栅格。

  • 得到的结果:

    👉 每个像元是一个 0--1 的概率值,可以说"这里发生事件的概率是 0.73"。

如果你的标签是 连续数量(比如次数、死亡人数等):

  • 这是 回归问题。

  • 做法:

    1. 用 RandomForestRegressor;

    2. predict(X) 得到连续数值;

    3. 写入 prediction 字段 → 转栅格。

  • 得到的结果:

    👉 每个像元是 "预测的次数/人数"。


5. 一句简短总结

  • 分类 RF:

    • predict():给你分类结果(0/1),适合做"发生 / 不发生"图。

    • predict_proba():给你类别的概率(0--1),适合做"风险概率图"。

  • 回归 RF:

    • 只有 predict():直接给连续数值(强度/次数/损失),适合做"强度分布图"。
相关推荐
听风吹等浪起4 小时前
第26章:ViT+InceptionDW+FocalLoss改进|CT骨折影像二分类完整Pytorch实现(含PyQt5推理GUI)
pytorch·qt·分类
企业数字化笔记18 小时前
表单发布前怎么验收?版本引用、字段兼容和历史数据回归
android·数据挖掘·回归
雨晨源码(同名B站)18 小时前
深度学习毕业设计选题推荐:基于卷积神经网络的无人机影像建筑裂缝裂纹检测分类与分割系统(LeNet-5 二分类模型、GCN-Res50分割模型)
深度学习·信息可视化·分类·cnn·毕业设计·无人机·课程设计
JAVA_AI人工智能项目实战1 天前
轻量级模型训练_RNN文本分类流水线实验代码
人工智能·rnn·分类
程序员清风2 天前
让 AI 编写与运行测试:从样例通过到回归验证
人工智能·数据挖掘·回归
D e re k ZH2 天前
保序回归:从 PAVA 到可并堆的单调约束优化
c++·算法·数据挖掘·回归·kotlin
吴名氏.2 天前
Java转AI Agent教程(第二周)超时重试与错误分类
java·人工智能·python·分类·ai agent
听风吹等浪起2 天前
第27章:EfficientNet全家桶|钢材表面6类缺陷分类完整Pytorch实现
pytorch·分类·数据挖掘
Raymond16883 天前
零样本TTS长视频配音的工程取舍:自回归、非自回归与韵律边界
人工智能·数据挖掘·回归·音视频·音频
kaixin_啊啊3 天前
【零基础学AI】第 19 章——用分类模型识别类别
人工智能·分类·数据挖掘