r - R中的错误:尚未实现的方法%*%
问题描述
我正在解决一个问题,但收到如下错误:
Error in cbind2(1, newx) %*% nbeta :
not-yet-implemented method for <data.frame> %*% <dgCMatrix>
这是我的代码:
X.A = model.matrix(College.lm.A)[,-1]
#
library(glmnet)
# # obtain the optimal lambda by cross-validation
lambda_1se = cv.glmnet(X.A, set.A$Apps)$lambda.1se
#
# # refit glmnet using the chosen lambda
lasso.A.CV = glmnet(X.A, set.A$Apps, lambda = lambda_1se)
coef(lasso.A.CV)
#
# # compare
coef_comp = cbind(OLS = coef(College.lm.A),
Ridge.CV = as.numeric(coef(lasso.A.CV)))
coef_comp
#
# # get the model.matrix of the set B
X.b = model.matrix(lm(Apps ~., data=set.B))[,-1]
#
# # calculate the mse.
#(set.B$Apps - predict(College.lm.A, set.B))
mse.lasso.cv = mean((set.B$Apps - predict(lasso.A.CV, set.B)^2))
data.frame(mse.ols, mse.lasso.cv)
我应该如何解决这个问题?
我尝试添加 model.matrix,并将倒数第二行更改为
mse.lasso.cv = mean((set.B$Apps - predict(model.matrix(lasso.A.CV), set.B)^2))
Then 它也给了我一个错误"Error in terms.default(object) : no terms component nor attribute"
我应该如何解决这个问题?
解决方案
第一个参数用于套索模型对象,第二个参数,你应该传递一个矩阵,你也不需要重新拟合 cv.glmnet 的结果,你可以通过调用 s="lambda.1se" 来预测:
library(glmnet)
set.A = data.frame(matrix(runif(500),ncol=10))
set.A$Apps = rnorm(50)
X.A = model.matrix(Apps ~.,data=set.A)[,-1]
lasso.A.CV = cv.glmnet(X.A, set.A$Apps)
set.B = data.frame(matrix(runif(500),ncol=10))
set.B$Apps = rnorm(50)
X.b = model.matrix(Apps ~.,data=set.B)[,-1]
mse.lasso.cv = mean((set.B$Apps -
predict(lasso.A.CV, X.b, s = "lambda.1se") ^2))
推荐阅读
- c# - 从 Angular 到 Web.API 的 POST 请求被阻止的跨域请求
- spring - Spring Integration Ftp remoteFileTemplate 卡在从 ftp 获取文件上
- r - 循环遍历数据框的列以使用 ggplot2 创建图
- ruby-on-rails - 回形针附件 content_type 验证仅在 Safari 中失败
- node.js - 我的简单 lambda 函数为 s3 listbucket 返回 null。我可能做错了什么?
- html - Bootstrap 4 Carousel Indicators are not appearing
- c# - 初始化一个变量并在每一帧上打印它的值
- javascript - 在 Firestore 不工作的情况下查询两个临近日期
- aem - AEM 6.4 升级 - 内部标记路径的跨界资源类型使用
- c# - 在 ASP.NET MVC 项目中使用 Serilog