Как разработать байесовский классификатор в R - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу рассчитать истинный байесовский классификатор для смоделированных данных, полученных из различных известных распределений. Мой вопрос здесь двоякий. Во-первых, есть ли встроенная процедура для вычисления его в R для разных моделей? (Тем не менее, его можно кодировать для конкретной модели на основе его PDF). Во-вторых, и, что более важно, как обучать классификатор и делать прогнозы, используя данные обучения и испытаний, соответственно. Ниже приводится задача двух классов с условными распределениями как многомерного гауссова с равными истинными априорными вероятностями. Любой удовлетворительный ответ будет высоко оценен. Спасибо!

Примечание: мне не нужно использовать наивный байесовский классификатор.

library(mvtnorm)

n.train = 200
n.test = 100
n.train1 = n.train + 1
n.train2 = 2 * n.train
n.test1 = n.test + 1
n.test2 = 2 * n.test

mu0 = c(0, 0)
mu1 = c(1, 1)
sigma0 = matrix(c(1,1,1,4), ncol = 2)
sigma1 = 4 * sigma0

# X: training set
X <- matrix(0, nrow = n.train2, ncol = 3)
X[,3] <- rep(1:2, each = n.train)
X[1:n.train, 1:2] <- rmvnorm(n = n.train, mean = mu0, sigma = sigma0)
X[n.train1:n.train2, 1:2] <- rmvnorm(n = n.train, mean = mu1, sigma = sigma1)

# Y: test set
Y <- matrix(0, nrow = n.test2, ncol = 3)
Y[,3] <- rep(1:2, each = n.test)
Y[1:n.test, 1:2] <- rmvnorm(n = n.test, mean = mu0, sigma = sigma0)
Y[n.test1:n.test2, 1:2] <- rmvnorm(n = n.test, mean = mu1, sigma = sigma1)
...