随机森林分类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():直接给连续数值(强度/次数/损失),适合做"强度分布图"。
相关推荐
是小蟹呀^2 小时前
从稀疏到自适应:人脸识别中稀疏表示的核心演进
人工智能·分类
AAD5558889912 小时前
YOLO11-EfficientRepBiPAN载重汽车轮胎热成像检测与分类_3
人工智能·分类·数据挖掘
爱吃rabbit的mq13 小时前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
机器学习之心17 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab
eWidget18 小时前
随机森林原理:集成学习思想 —— Java 实现多棵决策树投票机制
java·数据库·随机森林·集成学习·金仓数据库
WHD30618 小时前
苏州误删除 格式化 服务器文件 恢复
随机森林·支持向量机·深度优先·爬山算法·宽度优先·推荐算法·最小二乘法
小徐xxx20 小时前
Softmax回归(分类问题)学习记录
深度学习·分类·回归·softmax·学习记录
AAD5558889921 小时前
YOLOv8-MAN-Faster电容器缺陷检测:七类组件识别与分类系统
yolo·分类·数据挖掘
JicasdC123asd21 小时前
【工业检测】基于YOLO13-C3k2-EIEM的铸造缺陷检测与分类系统_1
人工智能·算法·分类
子夜江寒1 天前
基于 LSTM 的中文情感分类项目解析
人工智能·分类·lstm