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

如何用R包bestnormalize标准化数据?及标准化后直方图绘制报错解决

问题解决

错误原因

  • 调用boxcox时未指定数据框,R无法识别flipper_length_mm变量
  • bestNormalize系列函数返回的是包含标准化逻辑的对象,不是直接的数值向量,直接传入hist会因类型不匹配报错

修正后的代码示例

方式1:提取对象中的转换后数值

library(bestnormalize)
data(penguins, package = "palmerpenguins")
ppp <- penguins

# 先清理缺失值(原数据集存在NA,会导致标准化失败)
ppp_clean <- na.omit(ppp)

# 执行Box-Cox标准化并提取转换后的数值向量
bc_obj <- boxcox(ppp_clean$flipper_length_mm)
newflip <- bc_obj$x.t
hist(newflip, main = "Box-Cox标准化后的鳍肢长度直方图", xlab = "标准化鳍肢长度")

# 如果用orderNorm标准化,同样提取x.t字段
on_obj <- orderNorm(ppp_clean$flipper_length_mm)
newflip_on <- on_obj$x.t
hist(newflip_on, main = "OrderNorm标准化后的鳍肢长度直方图", xlab = "标准化鳍肢长度")

方式2:用predict函数生成转换后的值

# 用predict函数获取标准化结果(适合后续对新数据做相同转换的场景)
newflip_predict <- predict(bc_obj, newdata = ppp_clean$flipper_length_mm)
hist(newflip_predict)

额外注意事项

  • 原penguins数据集中flipper_length_mm存在缺失值,必须先用na.omit()清理,否则标准化函数会报错
  • bestNormalize包的所有标准化函数返回的对象,都通过x.t字段存储转换后的数值;predict()方法则可以基于已训练的标准化规则,对新数据做一致转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:07