随机森林分类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():直接给连续数值(强度/次数/损失),适合做"强度分布图"。
相关推荐
Niuguangshuo7 小时前
解密GPT的生成魔法:自回归模型
gpt·数据挖掘·回归
Java后端的Ai之路9 小时前
【分析式AI】-分类与回归的区别以及内联
人工智能·分类·数据挖掘·回归·aigc
feifeigo12310 小时前
SVM分类在高光谱遥感图像分类与预测中的应用
算法·支持向量机·分类
爱看科技10 小时前
微美全息(NASDAQ:WIMI)量子信息与经典算法融合,开启多类图像分类新征程
算法·分类·量子计算
青春不败 177-3266-052011 小时前
HMSC联合物种分布模型在群落生态学中的贝叶斯统计分析应用
随机森林·r语言·生态学·生物多样性·生态环境·生物群落·物种分布
AAD5558889911 小时前
轴体分类识别:基于Decoupled-Solo-Light模型的中心轴、铁质轴和尼龙轴自动检测与分类系统
人工智能·分类·数据挖掘
子夜江寒11 小时前
数据处理:下采样与SMOTE过采样
回归
Jerryhut11 小时前
sklearn函数总结十一 —— 随机森林
人工智能·随机森林·sklearn
木头左12 小时前
多任务联合训练框架下的遗忘门协同优化趋势跟踪与均值回归双目标平衡
算法·均值算法·回归
代码不停12 小时前
Java递归综合练习
java·开发语言·算法·回归