Error: Please use column names for `x` when using caret() for logistic regression
Error: Please use column names for `x` when using caret() for logistic regression
我想使用 caret 包构建逻辑回归模型。
这是我的代码。
library(caret)
df <- data.frame(response = sample(0:1, 200, replace=TRUE), predictor = rnorm(200,10,45))
outcomeName <-"response"
predictors <- names(df)[!(names(df) %in% outcomeName)]
index <- createDataPartition(df$response, p=0.75, list=FALSE)
trainSet <- df[ index,]
testSet <- df[-index,]
model_glm <- train(trainSet[,outcomeName], trainSet[,predictors], method='glm', family="binomial", data = trainSet)
我收到错误 Error: Please use column names for x
。
当我将 trainSet[,predictors]
替换为列名 predictors
时,我收到相同的错误。
不幸的是,当仅对 df[,1]
等一列进行子集化以将结果更改为 vector
时,R 有一个令人讨厌的行为,并且由于您只有一个预测变量,因此您遇到了此功能。您可以通过
将结果保存为 data.frame
trainSet[,predictors, drop = FALSE]
或
trainSet[predictors]
顺便说一句。代码还有两个问题:
- 第一个参数应该是预测变量,而不是响应
- 对于
caret
的逻辑回归,您需要响应为 factor
完整代码应该是:
library(caret)
df <- data.frame(response = sample(0:1, 200, replace=TRUE),
predictor = rnorm(200,10,45))
df$response <- as.factor(df$response)
outcomeName <-"response"
predictors <- names(df)[!(names(df) %in% outcomeName)]
index <- createDataPartition(df$response, p=0.75, list=FALSE)
trainSet <- df[ index,]
testSet <- df[-index,]
model_glm <- train(trainSet[predictors], trainSet[[outcomeName]], method='glm', family="binomial", data = trainSet)
*将 trainSet[,outcomeName]
更改为 trainSet[[outcomeName]]
以更明确地转换为 vector
我遇到了同样的问题,
`head(iris)
xx <- iris[,-5]
yy <- iris[,5]
rf.imp <- train(x = xx, y = yy, method = "rf", data = iris); rf.imp`
我想使用 caret 包构建逻辑回归模型。
这是我的代码。
library(caret)
df <- data.frame(response = sample(0:1, 200, replace=TRUE), predictor = rnorm(200,10,45))
outcomeName <-"response"
predictors <- names(df)[!(names(df) %in% outcomeName)]
index <- createDataPartition(df$response, p=0.75, list=FALSE)
trainSet <- df[ index,]
testSet <- df[-index,]
model_glm <- train(trainSet[,outcomeName], trainSet[,predictors], method='glm', family="binomial", data = trainSet)
我收到错误 Error: Please use column names for x
。
当我将 trainSet[,predictors]
替换为列名 predictors
时,我收到相同的错误。
不幸的是,当仅对 df[,1]
等一列进行子集化以将结果更改为 vector
时,R 有一个令人讨厌的行为,并且由于您只有一个预测变量,因此您遇到了此功能。您可以通过
data.frame
trainSet[,predictors, drop = FALSE]
或
trainSet[predictors]
顺便说一句。代码还有两个问题:
- 第一个参数应该是预测变量,而不是响应
- 对于
caret
的逻辑回归,您需要响应为factor
完整代码应该是:
library(caret)
df <- data.frame(response = sample(0:1, 200, replace=TRUE),
predictor = rnorm(200,10,45))
df$response <- as.factor(df$response)
outcomeName <-"response"
predictors <- names(df)[!(names(df) %in% outcomeName)]
index <- createDataPartition(df$response, p=0.75, list=FALSE)
trainSet <- df[ index,]
testSet <- df[-index,]
model_glm <- train(trainSet[predictors], trainSet[[outcomeName]], method='glm', family="binomial", data = trainSet)
*将 trainSet[,outcomeName]
更改为 trainSet[[outcomeName]]
以更明确地转换为 vector
我遇到了同样的问题,
`head(iris)
xx <- iris[,-5]
yy <- iris[,5]
rf.imp <- train(x = xx, y = yy, method = "rf", data = iris); rf.imp`