r - R中的“预测”函数不能预测测试集
问题描述
我试图将数据拟合到训练集上,然后将其应用于整个集以查看结果。但问题是我必须使用 adata.frame
来存储 x 和 y,因为我打算使用 bootstrap。我正在做一些这样的测试:
library(splines)
# generating the data
x_ = c(0.2, 0.9, 1.4, 1.7)
y_ = c(2.5, 4.3, 5.2, 2.5)
n = 50 - length(x_)
set.seed(0)
x = seq(0,3, length.out=n) + runif(n,0,0.1)
y = x*sin(3*x) + runif(n)
x = sort(c(x, x_))
y = c(y, y_)
df <- data.frame(x=sort(x), y=y)
# fitting the model
df1 <- df[c(2,4,6,8,16,20,25,30,35,40,45,50),]
ft <- lm(df1$y ~ bs(df1$x, knots=knots, degree=3))
pr <- predict(ft, df$x)
length(pr)
问题是predict
不喜欢df$x
,它只适用于data.frame(df$x)
(为什么?)。此外,它拒绝预测超过 12 个值,这对我来说非常奇怪。
解决方案
因为 predict() 期望输入作为包含“x”列的 data.frame() 对象。所以当你传递一个向量时,它不会识别它。
ft <- lm(y ~ bs(x, knots=knots, degree=3),data=df1)
pr <- predict(ft, newdata=df)
length(pr)
推荐阅读
- java - 使用 google tink 流编码问题的字节数组
- angular - 从单个模板角度动态创建组件
- angular - 角度转换 HttpClient 响应 - 类或接口
- coq - Coq:处理不等式 (<>)
- node.js - nodejs 部署的最佳实践 - 直接将 node_modules 移动到服务器或运行 npm install 命令
- elasticsearch - 弹性搜索:获得完全匹配的词条结果
- r - R - 验证一列仅具有某些值
- java - 使用 mybatis 执行过程时出现 AbstractMethodError
- unix - 如何在unix中以有效的方式删除除最新3个文件夹之外的所有文件夹
- javascript - 即使在重新加载页面后 Chrome 也会显示以前的数据