使用包cvTools

时间:2015-11-27 16:14:13

标签: r

我试图使用包cvTools来估计LDA拟合的分类错误。我过去成功地使用过cvTools和其他模型,但是使用LDA它并没有按预期工作。

data <- rbind(data.frame(cls='A', x=rnorm(10, mean=5)),
              data.frame(cls='B', x=rnorm(10, mean=10)))
cv.fit <- cvFit(
    lda,
    formula=cls ~ x,
    data=data,
    cost=function(true, pred) { 
        mean(true != pred)
    },
    K=10
)

似乎cvTools在内部使用通用predict模型函数。 predict.lda不会返回类标签的简单向量,而是返回包含属性classposteriorx的列表。 如果我在成本函数中设置调试断点,我看到true是类标签的向量,但pred表示转换为向量的列表。 所以我的问题是我如何仍然可以将cvTools与LDA一起使用。

我的第一个想法是通过继承lda来提供一个新的预测方法,希望cvTools然后调用我的预测函数,该函数返回类标签的向量:

lda.fit <- lda(cls ~ x, data)

class(lda.fit) <- c('ldaCV', class(lda.fit))
predict.ldaCV <- function(m, newdata) {
    MASS:::predict.lda(m, newdata)$class
}

cv.fit <- cvFit(
    lda.fit,
    data=data,
    y=data$cls,
    cost=function(true, pred) { 
        mean(true != pred)
    },
    K=10
)

然而,没有任何改变。 pred仍然是混乱的清单。

0 个答案:

没有答案