使用Caret中的glmnet时遇到错误
以下是示例 加载库
library(dplyr)
library(caret)
library(C50)
从 C50 库加载流失数据集
data(churn)
创建 x 和 y 变量。
churn_x <- subset(churnTest, select= -churn)
churn_y <- churnTest[[20]]
使用createFolds()在目标变量churn_y上创建5个CV折叠。
myFolds <- createFolds(churn_y, k = 5)
创建trainControl对象:myControl
myControl <- trainControl(
summaryFunction = twoClassSummary,
classProbs = TRUE, # IMPORTANT!
verboseIter = TRUE,
savePredictions = TRUE,
index = myFolds
)
拟合glmnet模型:model_glmnet
model_glmnet <- train(
x = churn_x, y = churn_y,
metric = "ROC",
method = "glmnet",
trControl = myControl
)
我遇到了以下错误:
lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs)中的参数5存在NA/NaN/Inf值,这是由于外部函数调用导致的错误。 此外,还有一个警告信息: 在lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs)中,强制转换导致了NAs。
我已经检查过churn_x变量,并没有缺失值。
sum(is.na(churn_x))
有人知道答案吗?
model.matrix()
的转换对分类变量执行一次独热编码,而且b) 当使用 caret::train() 进行算法"knn", "svmRadial", "svmLinear", "xgbTree", "xgbLinear"
时,你也需要这样做。 - Agile Beanembed
包。这种类型的东西通常在您有很多分类特征时使用。当监督学习器是神经网络 (layer_embedding
) 时最常用。但是没有什么可以阻止您与任何学习器一起玩弄它。 - missuse