R中的弹性网问题-check_dims(x=x,y=y)中的错误:nrow(x)==n不是TRUE



错误:nrow(x(==n不是TRUE

我不确定";n〃;在这种情况下指的是。以下是引发错误的代码:

# BUILD MODEL 
set.seed(9353)
elastic_net_model <- train(x = predictors, y = y,
method = "glmnet",
family = "binomial",
preProcess = c("scale"),
tuneLength = 10,
metric = "ROC",
# metric = "Spec",
trControl = train_control)

其他人遇到这个错误的主要问题是他们的y变量不是因子或数字。他们经常将其作为矩阵或数据帧传递。我明确地将y作为一个因子,如下所示:

# Make sure that the outcome variable is a two-level factor
dfBlocksAll$trophout1 = as.factor(dfBlocksAll$trophout1)
# Set levels for dfBlocksAll$trophout1
levels(dfBlocksAll$trophout1) <- c("NoTrophy", "Trophy")
# Split the data into training and test set, 70/30 split
set.seed(1934)
index <- createDataPartition(y = dfBlocksAll$trophout1, p = 0.70, list = FALSE)
training  <- dfBlocksAll[index, ]
testing <- dfBlocksAll[-index, ]
# This step is the heart of the process
y <- dfBlocksAll$trophout1 # outcome variable - did they get a trophy or not?
predictors <- training[,which(colnames(training) != "trophout1")]

在块抛出错误之前,唯一其他可能相关的代码是:

train_control <- trainControl(method = "repeatedcv",
number = 10,
repeats = 10,
# sampling = "down",
classProbs = TRUE, 
summaryFunction = twoClassSummary,
allowParallel = TRUE,
savePredictions = "final",
verboseIter = FALSE)

由于我的y已经是一个因子,我假设我的错误与x有关,而不是与y有关;预测因子"该数据帧包含768个obs.(共67个变量(,并用字符和数字填充。

您的响应变量必须来自训练,这里我使用一个示例数据集:

dfBlocksAll = data.frame(matrix(runif(1000),ncol=10))
dfBlocksAll$trophout1 = factor(sample(c("NoTrophy", "Trophy"),100,replace=TRUE))
index <- createDataPartition(y = dfBlocksAll$trophout1, p = 0.70, list = FALSE)
training  <- dfBlocksAll[index, ]
testing <- dfBlocksAll[-index, ]

这个部分应该改变:

y <- training$trophout1 
predictors <- training[,which(colnames(training) != "trophout1")]

剩下的运行得很好:

elastic_net_model <- train(x = predictors, y = y,
method = "glmnet",
family = "binomial",
preProcess = c("scale"),
tuneLength = 10,
metric = "ROC",
trControl = train_control)
elastic_net_model
glmnet 
71 samples
10 predictors
2 classes: 'NoTrophy', 'Trophy' 
Pre-processing: scaled (10) 
Resampling: Cross-Validated (10 fold, repeated 10 times) 
Summary of sample sizes: 65, 64, 64, 63, 64, 64, ... 
Resampling results across tuning parameters:
alpha  lambda        ROC        Sens       Spec      
0.1    0.0003090198  0.5620833  0.5908333  0.51666667
0.1    0.0007138758  0.5620833  0.5908333  0.51666667
0.1    0.0016491457  0.5614583  0.5908333  0.51083333
0.1    0.0038097407  0.5594444  0.5933333  0.51083333

最新更新