【问题标题】:Train function from R caret package error: "Something is wrong; all the Accuracy metric values are missing"从 R 插入符号包错误中训练函数:“出了点问题;所有准确度度量值都丢失了”
【发布时间】:2016-06-22 02:59:20
【问题描述】:

我想运行logreg 回归。在 R 上运行我的代码后,我收到以下错误:

出了点问题;缺少所有准确度指标值:

    Accuracy       Kappa    
 Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA  
 NA's   :9     NA's   :9    
Error in train.default(x, y, weights = w, ...) : Stopping
In addition: There were 19 warnings (use warnings() to see them)

这是我的代码:

## Data
donner <- read.delim("http://web.as.uky.edu/statistics/users/pbreheny/760/data/donner.txt")
set.seed(1234)
library(caret)
donner$Age <- as.numeric(donner$Age)
donner$Status <- as.factor(donner$Status)  
donner$Sex <- as.numeric(donner$Sex) 
splitIndex <- createDataPartition(donner$Status, p = .80, list = FALSE, times = 1)
trainDF <- donner[splitIndex,]
testDF <- donner[-splitIndex,]
ctrl <- trainControl(method = "cv", number = 2)
logregmodel <- train(Status ~ ., data = donner, method = "logreg", trControl = ctrl)

编辑 1:

我将状态更改为二进制(0 和 1),但仍有一些错误。这是新代码:

## Data
donner <- read.delim("http://web.as.uky.edu/statistics/users/pbreheny/760/data/donner.txt")
set.seed(1234)
library(caret)
donner$Age <- as.numeric(donner$Age)
donner$Status <- as.integer(donner$Status)-1  
donner$Sex <- as.numeric(donner$Sex)-1 
splitIndex <- createDataPartition(donner$Status, p = .80, list = FALSE, times = 1)
trainDF <- donner[splitIndex,]
testDF <- donner[-splitIndex,]
ctrl <- trainControl(method = "cv", number = 2)
donner$Status <- as.factor(donner$Status)
logregmodel <- train(Status ~ ., data = donner, method = "logreg", trControl = ctrl)

【问题讨论】:

  • 你确定你拟合的模型对吗?如果您检查错误,它还会显示预测变量中的非二进制参数github.com/topepo/caret/blob/master/RegressionTests/Code/…
  • 我想拟合一个逻辑回归模型。输出只能取两个值。
  • 您对输出是正确的。但是仔细看@Hack-R的代码,预测器Age变成了二进制。我在您的编辑中没有看到这一点。
  • 问题是如果我不将年龄保持为数字,我会丢失一些信息。通常,我应该能够使用连续变量进行逻辑回归。我该怎么做?
  • 哦,好吧,你真的不想要一个logreg(逻辑回归)你只是想要一个logit模型。

标签: r r-caret


【解决方案1】:

只需要修复您的数据。逻辑回归——这就是我假设你想要的,因为你调用了逻辑回归 (logreg) 方法,如果你想要其他东西,比如 logit 模型,这整个问题都是无关紧要的,它永远不会给出你首先的错误 - 仅适用于二进制变量并且它不明白1和2可以代表二进制数据。它需要文字 0 和 1。

donner <- read.delim("http://web.as.uky.edu/statistics/users/pbreheny/760/data/donner.txt")
set.seed(1234)
library(caret)
donner$Age <- as.numeric(donner$Age)
donner$Status <- as.factor(donner$Status)  
donner$Sex <- as.numeric(donner$Sex) 
splitIndex <- createDataPartition(donner$Status, p = .80, list = FALSE, times = 1)
trainDF <- donner[splitIndex,]
testDF <- donner[-splitIndex,]
ctrl <- trainControl(method = "cv", number = 3)
donner$Status <- as.character(donner$Status)
donner$Status[!donner$Status == "Survived"] <- 0
donner$Status[donner$Status == "Survived"] <- 1
donner$Age_gr_mean <- 0
donner$Age_gr_mean[donner$Age_gr_mean > mean(donner$Age)] <- 1
donner$Age <- NULL
donner$Status <- as.numeric(donner$Status)
donner$Sex[donner$Sex == 2] <- 0
logregmodel <- train(Status ~ ., data = donner, method = "logreg", trControl = ctrl)

【讨论】:

  • 我尝试运行您的代码,但我的 R 控制台冻结了。但是,我尝试实施您的建议,但仍然有错误。我将编辑问题。
  • @user6496985 我没有任何错误;模型完成。如果您的控制台冻结,那是因为您需要增加 CPU/RAM。有很多方法可以做到这一点。确保您使用的是 64 位。我在一台 8GB RAM、双核 CPU 笔记本电脑上运行此程序(在 Google Play 上观看电影时),因此对于大多数在 R 中进行适当设置以最大限度地提高 RAM 使用率的笔记本电脑而言,资源要求并不高。
【解决方案2】:

我个人从未使用过“logreg”方法。似乎有些行是无用的。这是我使用“glm”作为方法的建议。

## Data
donner <- read.delim("http://web.as.uky.edu/statistics/users/pbreheny/760/data/donner.txt")

set.seed(1234)
library(caret)

donner$Age <- as.numeric(donner$Age)
donner$Status <- as.factor(donner$Status)
donner$Sex <- as.numeric(donner$Sex)-1 

splitIndex <- createDataPartition(donner$Status, p = .80, list = FALSE, times = 1)
trainDF <- donner[splitIndex,]
testDF <- donner[-splitIndex,]

ctrl <- trainControl(method = "cv", number = 3)
logregmodel <- train(Status ~ ., data = trainDF, method = "glm", family='binomial', trControl = ctrl)

summary(logregmodel)

【讨论】:

    猜你喜欢
    • 2016-07-10
    • 2015-08-14
    • 2020-12-14
    • 2016-01-10
    • 2015-08-09
    • 2021-04-01
    • 2017-09-29
    • 2020-11-30
    • 2015-08-10
    相关资源
    最近更新 更多