【问题标题】:Predict() with regsubsetsPredict() 与 regsubsets
【发布时间】:2018-03-25 20:35:50
【问题描述】:

我正在尝试复制 An Introduction to Statistical Learning with Applications in R 中的结果。特别是第 6.5.3 节中的实验室。我完全按照实验室的代码:

library("ISLR")
library("leaps")
set.seed(1)
train = sample(c(TRUE, FALSE), nrow(Hitters), rep = TRUE)
test = (!train)
regfit.best = regsubsets(Salary ~., data = Hitters[train,], nvmax= 19)

test.mat = model.matrix(Salary~., data = Hitters[test,]) 

val.errors = rep(NA, 19)
for (i in 1:19){
  coefi= coef(regfit.best, id = i)
  pred=test.mat[,names(coefi)]%*%coefi
  val.errors[i]=mean((Hitters$Salary[test]-pred)^2) 
}

当我运行它时,我仍然收到以下错误:

Warning message:
In Hitters$Salary[test] - pred :
  longer object length is not a multiple of shorter object length
Error in mean((Hitters$Salary[test] - pred)^2) : 
  error in evaluating the argument 'x' in selecting a method for function 'mean': Error: dims [product 121] do not match the length of object [148]

而 val.errors 是 19 个 NA 的向量。

我对 R 和验证方法还比较陌生,所以我不确定为什么它们的维度不同。

【问题讨论】:

  • 你需要Hitters$Salary[test, ]

标签: r machine-learning cross-validation isl


【解决方案1】:

这实际上是一个问题,没有继承上一小节中的步骤,其中省略了不完整的条目。

【讨论】:

    【解决方案2】:

    您需要删除缺少数据的行。在开头运行“Hitters = na.omit(Hitters)”。

    【讨论】:

      猜你喜欢
      • 2018-10-07
      • 2019-05-22
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      相关资源
      最近更新 更多