收到警告:«'newdata' 有 150 行,但找到的变量有 350 行»在 R 中的 LDA 预测上
Getting Warning: «'newdata' had 150 rows but variables found have 350 rows» on LDA Predict in R
我正在尝试 运行 LDA 模型的 predict
函数。我有两个预测变量 x1
和 x2
以及一个值为 -1 和 1 的分类响应 y
。所有参数都包含 500 个数据点。我按如下方式拆分数据集:
xx = data.frame(cbind(x1,x2))
x = cbind(x1,x2)
x_train = x[1:350,]
x_test = x[351:N,]
y_train = y[1:350]
y_test = y[351:N]
一些输出:
x1 x2 y
1 -1.1843924 1.920765 -1
2 3.3167508 2.321631 1
3 -3.0301378 5.973256 -1
4 -1.3262624 -2.320463 -1
5 -0.6534166 -3.050822 -1
6 -2.0051728 -4.118190 -1
然后我拟合LDA模型并尝试predict
函数:
modelo.lda = lda(y_train~xx[1:350,1]+xx[1:350,2])
predict.lda = predict(modelo.lda, newdata=xx[351:N,])
注意: xx
值在this answer 之后以相同的方式表示相同的问题。
但是我得到了:
Warning message:
'newdata' had 150 rows but variables found have 350 rows
我认为保持相同的 xx[init:end,]
表格可以解决 answer of this question 所述的问题,但似乎没有。
会是什么?
提前致谢。
作为建议,如果你有训练集和测试集,最好按这种方式使用它们,这样你就可以避免潜在的陷阱。试试这个:
library(MASS)
#Data
N <- 500
x1 <- rnorm(N,0,1)
x2 <- rnorm(N,1,5)
y <- round(runif(N,0,1),0)
xx = data.frame(x1,x2,y)
x_train = xx[1:350,]
x_test = xx[351:N,]
#Models
modelo.lda = lda(y_train~x1+x2,data = x_train)
predict.lda = predict(modelo.lda, newdata=x_test)
我们不会产生任何警告。
我正在尝试 运行 LDA 模型的 predict
函数。我有两个预测变量 x1
和 x2
以及一个值为 -1 和 1 的分类响应 y
。所有参数都包含 500 个数据点。我按如下方式拆分数据集:
xx = data.frame(cbind(x1,x2))
x = cbind(x1,x2)
x_train = x[1:350,]
x_test = x[351:N,]
y_train = y[1:350]
y_test = y[351:N]
一些输出:
x1 x2 y
1 -1.1843924 1.920765 -1
2 3.3167508 2.321631 1
3 -3.0301378 5.973256 -1
4 -1.3262624 -2.320463 -1
5 -0.6534166 -3.050822 -1
6 -2.0051728 -4.118190 -1
然后我拟合LDA模型并尝试predict
函数:
modelo.lda = lda(y_train~xx[1:350,1]+xx[1:350,2])
predict.lda = predict(modelo.lda, newdata=xx[351:N,])
注意: xx
值在this answer 之后以相同的方式表示相同的问题。
但是我得到了:
Warning message: 'newdata' had 150 rows but variables found have 350 rows
我认为保持相同的 xx[init:end,]
表格可以解决 answer of this question 所述的问题,但似乎没有。
会是什么?
提前致谢。
作为建议,如果你有训练集和测试集,最好按这种方式使用它们,这样你就可以避免潜在的陷阱。试试这个:
library(MASS)
#Data
N <- 500
x1 <- rnorm(N,0,1)
x2 <- rnorm(N,1,5)
y <- round(runif(N,0,1),0)
xx = data.frame(x1,x2,y)
x_train = xx[1:350,]
x_test = xx[351:N,]
#Models
modelo.lda = lda(y_train~x1+x2,data = x_train)
predict.lda = predict(modelo.lda, newdata=x_test)
我们不会产生任何警告。