R:训练数据和测试数据具有相同的预测
R: Train data and test data have the same prediction
我正在尝试使用 lm 和预测函数来测试预测是否足够正确。原来train数据和test数据的预测是一样的
set.seed(1);
x = matrix(rnorm(300*100),300,100)
y = rnorm(300);
test.x = matrix(rnorm(300*100),300,100)
test.y = rnorm(300);
xy = data.frame(y, x)
fit = lm(y~x, xy)
x.df = data.frame(x)
pred1 = predict(fit, newdata=x.df)
test.x.df = data.frame(test.x)
pred = predict(fit, newdata=test.x.df)
sum(abs(pred1-pred))
在 lm()
中,您使用的是公式 y ~ x
。尽管您的数据中有 y
列,但没有 x
列。因此,尽管 lm()
正在使用您所有的 x
列,但它的名称是错误的
names(fit$model)
[1] "y" "x"
每当您调用 predict()
使用该模型时,它将 return 模型的拟合值,因为它无法匹配列。
改为:
fit = lm(y ~ ., xy)
你会发现现在看起来不一样了:
names(fit$model)
[1] "y" "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10"
...
[100] "X99" "X100"
最后,它将使用您在 newdata
参数中传递的数据:
sum(abs(pred1-pred))
[1] 196.9676
我正在尝试使用 lm 和预测函数来测试预测是否足够正确。原来train数据和test数据的预测是一样的
set.seed(1);
x = matrix(rnorm(300*100),300,100)
y = rnorm(300);
test.x = matrix(rnorm(300*100),300,100)
test.y = rnorm(300);
xy = data.frame(y, x)
fit = lm(y~x, xy)
x.df = data.frame(x)
pred1 = predict(fit, newdata=x.df)
test.x.df = data.frame(test.x)
pred = predict(fit, newdata=test.x.df)
sum(abs(pred1-pred))
在 lm()
中,您使用的是公式 y ~ x
。尽管您的数据中有 y
列,但没有 x
列。因此,尽管 lm()
正在使用您所有的 x
列,但它的名称是错误的
names(fit$model)
[1] "y" "x"
每当您调用 predict()
使用该模型时,它将 return 模型的拟合值,因为它无法匹配列。
改为:
fit = lm(y ~ ., xy)
你会发现现在看起来不一样了:
names(fit$model)
[1] "y" "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10"
...
[100] "X99" "X100"
最后,它将使用您在 newdata
参数中传递的数据:
sum(abs(pred1-pred))
[1] 196.9676