问题描述
(注意:我知道已经有数篇文章讨论了这个问题,但是没有一种解决方案适用于我的数据集。)
我首次使用内置数据集“ 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 (将#修改为@)