在Lasso回归中newx的格式导致R中出现错误

我正在尝试实现Lasso线性回归。我训练了我的模型,但在尝试对未知数据进行预测时,出现了以下错误:

 Error in cbind2(1, newx) %*% nbeta :      invalid class 'NA' to dup_mMatrix_as_dgeMatrix

我的数据摘要如下:

enter image description here

我想预测未知的percent_gc。我最初使用已知percent_gc的数据来训练模型

 set.seed(1) ###训练数据 data.all <- tibble(description = c('Xylanimonas cellulosilytica XIL07, DSM 15894','Teredinibacter turnerae T7901',                            'Desulfotignum phosphitoxidans FiPS-3, DSM 13687','Brucella melitensis bv. 1 16M'),            phylum = c('Actinobacteria','Proteobacteria','Proteobacteria','Bacteroidetes'),            genus = c('Acaryochloris','Acetohalobium','Acidimicrobium','Acidithiobacillus'),            Latitude = c('63.93','69.372','3.493.11','44.393.704'),            Longitude = c('-22.1','88.235','134.082.527','-0.130781'),            genome_size = c(8361599,2469596,2158157,3207552),            percent_gc = c(34,24,55,44),            percent_psuedo = c(0.0032987747,0.0291222313,0.0353728489,0.0590663703),            percent_signalpeptide = c(0.02987198,0.040607055,0.048757170,0.061606859))  ###用于预测的数据  data.prediction <- tibble(description = c('Liberibacter crescens BT-1','Saprospira grandis Lewin',                            'Sinorhizobium meliloti AK83','Bifidobacterium asteroides ATCC 25910'),            phylum = c('Actinobacteria','Proteobacteria','Proteobacteria','Bacteroidetes'),            genus = c('Acaryochloris','Acetohalobium','Acidimicrobium','Acidithiobacillus'),            Latitude = c('39.53','69.372','5.493.12','44.393.704'),            Longitude = c('20.1','-88.235','134.082.527','-0.130781'),            genome_size = c(474832,2469837,2158157,3207552),            percent_gc = c(NA,NA,NA,NA),            percent_psuedo = c(0.0074639239,0.0291222313,0.0353728489,0.0590663703),            percent_signalpeptide = c(0.02987198,0.040607055,0.048757170,0.061606859))x=model.matrix(percent_gc~.,data.all)y=data.all$percent_gccv.out <- cv.glmnet (x, y, alpha = 1,family  = "gaussian")best.lambda= cv.out$lambda.minfit <- glmnet(x,y,alpha=1)

然后我想对未知percent_gc的数据进行预测。

newX = matrix(data = data.prediction %>% select(-percent_gc)) data.prediction$percent_gc <-  predict(object = fit ,type="response", s=best.lambda, newx=newX)

这就产生了我上面提到的错误。

我不明白newX应该采用什么格式才能解决这个问题。欢迎提供见解。


回答:

我无法真正弄清楚如何构建一个合适的矩阵,但glmnetUtils包提供了直接在数据框上拟合公式并进行预测的功能。通过这种方式,我成功预测了数值:

library(glmnetUtils)fit <- glmnet(percent_gc~.,data.all,alpha=1)cv.out <- cv.glmnet (percent_gc~.,data.all, alpha = 1,family  = "gaussian")best.lambda= cv.out$lambda.minpredict(object = fit,data.prediction,s=best.lambda)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注