0

作为机器学习课程作业的一部分,我在不使用任何外部库的情况下实现了一个 NaiveBayes 分类器。

我的训练数据集 X 有 8 个特征和 800 行的一个二进制标签;我已经按类计算了每个特征的均值和标准差的 1:8 向量,以及两个类的先验。

为了评估训练数据集上分类器的准确性,我想生成一个具有相同维度(i=800,j=8)的矩阵 Y,其中每个元素 y_ij 给出为

y_ij = dnorm(x_ij, mean = mean_j, sd_j, log = T)

我试过sweep、apply和lapply都没有成功。我被困住了,不幸的是,这是一个熟悉 R 而不是理解算法的问题。非常感谢您的帮助。

4

1 回答 1

0

对此可能有更好的数据设置,但如果您已经有X两个均值和 sds 向量,xmean并且xsd,您可以使用sapply. 这是一个可重现的示例:

X <- matrix(rnorm(30), 10, 3)
xmean <- apply(X, 2, mean)
xsd <- apply(X, 2, sd)
sapply(1:ncol(X), function(j) { dnorm(X[,j], xmean[j], xsd[j], log = TRUE) })

于 2018-01-25T22:48:47.853 回答