【问题标题】:In R caret, obtain in-sample and out-of sample probability estimates在 R 插入符号中,获得样本内和样本外概率估计
【发布时间】:2015-08-18 00:11:32
【问题描述】:

我有一些类似的数据:

data(Titanic) # need one row per passenger

df <- data.frame(Titanic, stringsAsFactors=TRUE) 

df <- df[rep(seq_len(nrow(df)), df[,"Freq"]), which(names(df)!="Freq")] 

我在caret 中使用重复的交叉验证逻辑回归训练了一个模型,例如:

library(caret) 

tc <- trainControl(method="repeatedcv", number=10, repeats=3, 
                   returnData=TRUE, savePredictions=TRUE, classProbs=TRUE)

glmFit <- train(Survived ~ Class + Sex + Age, data = df, weights=Freq, 
                method="glm", family="binomial",
                trControl = tc)

summary(glmFit)

我想获得平均样本内拟合概率和样本外预测概率(数据框中每一行的平均值分别为 27 和 3 个值,在这种情况下,因为它是 10 倍 CV x 3 次重复)。

我想将每一行的平均样本内和样本外概率估计附加到数据框上——看起来像以下两列:

>df_appended
| Class  | Sex |  Age | Survived | training_p_surv_est | testing_p_surv_est |  
      3rd     M  Child          0                  .251                 .259
      3rd     M  Child          1                  .251                 .259
      2nd     M  Child          1                  .324                 .319
      2nd     M  Child          0                  .324                 .319   

根据?trainControl,我已使用savePredictions=TRUE 保存了每次重采样的保留预测。 (还有classProbs=TRUE,因为我想要原始概率,而不是类。)

如何访问样本内和样本外预测?看着?predict.train,我试过用

extractProb(list(glmFit)) 
#Error in eval(expr, envir, enclos) : object 'Class2nd' not found 

非常感谢。

【问题讨论】:

    标签: r prediction logistic-regression cross-validation r-caret


    【解决方案1】:

    如果您看看Glmfit对象。它包含一个名为'pred'的子符。

    head(glmFit$pred)
    

    您将获得预测的概率以及每个CV和折叠的预测类。

    欢呼声。

    【讨论】:

    • 我不确定这是问题所询问的。 glmFit$pred 仍然会给出样本外的性能,因为在每个折叠中,保留样本在训练时不使用,而仅在预测时使用。
    猜你喜欢
    • 2023-04-01
    • 2017-09-07
    • 2017-04-17
    • 2013-12-15
    • 2021-02-23
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    相关资源
    最近更新 更多