You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

决策树不使用Standard Scaler时可视化出现MemoryError问题咨询

问题解答

一、决策树确实不需要特征缩放

决策树的分裂逻辑是基于特征取值的阈值计算信息增益、基尼系数、熵等指标来做划分,特征缩放只会改变数值的绝对大小,不会改变不同取值的相对顺序,所以完全不会影响模型的训练和预测结果。你实际测试也能发现,去掉特征缩放代码后,模型的训练、预测环节都能正常运行,报错只出现在可视化步骤,和决策树本身没有关系。

二、内存报错的原因

报错出现在meshgrid生成可视化网格的步骤,完全是可视化代码的参数适配问题:

  • 做了标准化后,年龄、预估薪资两个特征的取值范围都被压缩到了±3左右,用步长0.01生成网格时,总点数只有(6/0.01)*(6/0.01)=36万,内存完全可以承载。
  • 去掉标准化后,预估薪资的原始取值范围是1万到十几万,跨度超过10万,你还是用步长0.01生成网格的话,仅薪资维度就要生成超过1000万个点,两个维度相乘后点数达到百亿级别,直接超出内存上限,触发报错。

三、修复方案

任选一种即可:

  • 方案1:调整网格生成的步长,适配原始特征的取值范围,比如年龄步长设为1、薪资步长设为100,就能把网格点数降到正常水平,修改后的代码示例:
# 未做特征缩放时的网格生成代码
x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step  =1),  
nm.arange(start = x_set[:, 1].min() - 100, stop = x_set[:, 1].max() + 100, step = 100))
  • 方案2:可视化环节临时对特征做标准化,生成图像后再把坐标轴刻度映射回原始数值范围,不需要调整步长也能正常出图,且不会影响模型本身的结果。

内容的提问来源于stack exchange,提问作者curiouz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:48:02