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

使用nls拟合训练集后,predict命令返回训练集值而非测试集值的问题

解决nls predict返回训练集预测值的问题

我来帮你搞定这个问题!你遇到的核心问题在于predict.nls函数对newdata参数的格式要求——它需要一个数据框,而且数据框里的列名必须和你拟合模型时用的自变量名称完全一致(这里是HD)。你直接传入向量HD_test的话,函数没法识别这是新的测试数据,所以默认用训练集的数据生成了预测值。

修正步骤

  • 把测试集的HD_test转换成列名为HD的数据框,确保和模型中的自变量名匹配
  • 将这个数据框作为newdata参数传入predict函数

修正后的完整代码

## Following is train set
HD = c(714,715,716.6,717.6)
p_l = c(0.5,0.1,0.05826374, 0.005982334)
## Fitting with nls
raw_data = data.frame(HD,p_l)
exp_fit = nls(p_l~exp(a+b*HD),data = raw_data,trace = T,start = list(a = 0,b = 0))
## Following is test set
HD_test = c(718.2,719.17)
# 转换为符合要求的数据框
test_data = data.frame(HD = HD_test)
# 生成测试集预测值
p_l_test = predict(exp_fit, newdata = test_data)

# 查看结果
print(p_l_test)

这样运行后,p_l_test就会返回对应718.2和719.17这两个测试点的预测值,而不是训练集的结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:41:27