随机森林分类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():直接给连续数值(强度/次数/损失),适合做"强度分布图"。
相关推荐
studytosky1 小时前
深度学习理论与实战:MNIST 手写数字分类实战
人工智能·pytorch·python·深度学习·机器学习·分类·matplotlib
7***37451 小时前
DeepSeek在文本分类中的多标签学习
学习·分类·数据挖掘
合作小小程序员小小店14 小时前
web网页,在线%抖音,舆情,线性回归%分析系统demo,基于python+web+echart+nlp+线性回归,训练,数据库mysql
python·自然语言处理·回归·nlp·线性回归
Teacher.chenchong15 小时前
GEE云端林业遥感:贯通森林分类、森林砍伐与退化监测、火灾评估、森林扰动监测、森林关键生理参数(树高/生物量/碳储量)反演等
人工智能·分类·数据挖掘
Jay200211117 小时前
【机器学习】7-9 分类任务 & 逻辑回归的成本函数 & 逻辑回归的梯度下降
笔记·机器学习·分类
斯外戈的小白2 天前
【NLP】基础概念+RNN架构
rnn·自然语言处理·分类
Coovally AI模型快速验证2 天前
去噪扩散模型,根本不去噪?何恺明新论文回归「去噪」本质
人工智能·深度学习·算法·机器学习·计算机视觉·数据挖掘·回归
MicroTech20252 天前
MLGO微算法科技时空卷积与双重注意机制驱动的脑信号多任务分类算法
科技·算法·分类
大数据魔法师2 天前
分类与回归算法(四)- 最近邻分类
分类·k近邻算法