带有脱字符号的glmnet返回“ lognetx,is.sparse,ix,jx,y,权重,偏移量,alpha,nobs,:NA / NaN / Inf在外部函数调用arg 5中的错误”

问题描述

(注意:我知道已经有数篇文章讨论了这个问题,但是没有一种解决方案适用于我的数据集。)

我首次使用内置数据集“ infert”探索了插入符号的机器学习。

我想制作一个随机森林和一个glmnet模型,然后比较两者的AUC得分。

我首先重命名输出因子水平,因为如果它们是“ 0”和“ 1”,则它不会运行:

infert_y <- factor(infert$case) %>% plyr::revalue(c("0"="control","1"="case"))
infert_x <- subset(infert,select=-case)

# Create cross-validation folds:
myFolds <- createFolds(infert_y,k = 10)

# Create reusable trainControl object: myControl
myControl_categorical <- trainControl(
  summaryFunction = twoClassSummary,classprobs = TRUE,verboseIter = TRUE,savePredictions = TRUE,index = myFolds
)


# Fit a glmnet:
model_glmnet <- train(
  x = infert_x,y = infert_y,metric = "ROC",method = "glmnet",preProcess=c("zv","nzv","medianImpute","center","scale"),trControl = myControl_categorical
)

返回:

lognet(x,is.sparse,ix,jx,y,weights,offset,alpha,nobs,错误: 外部函数调用中的NA / NaN / Inf(arg 5)

数据集中没有丢失或无穷大的值,并且所有x变量都是数字(无字符变量)。

我尝试将x和y数据集转换为矩阵,因为另一篇文章中有人说这有帮助:

x_matrix <- as.matrix(infert_x)
y_matrix <- as.matrix(infert_y)

# Fit a glmnet:
model_glmnet <- train(
  x = x_matrix,y = y_matrix,trControl = myControl_categorical
)

但是我仍然遇到相同的错误。我添加了我能想到的所有预处理步骤,但是它们都没有改变。

为什么会发生这种情况(在给定相同的trainControl对象的情况下,随机森林运行良好)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)