2015-06-02 2 views
1

Я узнал и установил байесовскую сеть в пакете bnlearn R, и я хочу предсказать ее значение «событие».Ошибка в функции прогнозирования bn.fit в bnlear R

fl="data/discrete_kdd_10.txt" 
h=TRUE 
dtbl1 = read.csv(file=fl, head=h, sep=",") 
net=hc(dtbl1) 
fitted=bn.fit(net,dtbl1) 

Я хочу, чтобы предсказать значение узла «событий» на основе данных, хранящихся в другом файл с той же структурой, что и файл, используемым для обучения.

fileName="data/dcmp.txt" 
dtbl2 = read.csv(file=fileName, head=h, sep=",") 
predict(fitted,"event",dtbl2) 

Однако, предсказать не удается с Error in check.data(data) : variable duration must have at least two levels.

Я не понимаю, почему не должно быть никаких ограничений на количество уровней переменных в доказательствах data.frame.

Файл данных dtbl2 data.frame содержит только несколько строк, по одному для каждого сценария, в котором я хочу предсказать значение «событие».

Я знаю, что могу использовать cpquery, но я хочу использовать функцию predict также для сетей со смешанными переменными (как дискретными, так и непрерывными). Я не узнал, как использовать доказательства непрерывной переменной в cpqery.

Может кто-нибудь объяснить, что я делаю неправильно с функцией predict и как мне это сделать правильно? Спасибо заранее!

ответ

2

Проблема заключалась в том, что чтение доказательств data.frame в

fileName="data/dcmp.txt" 
dtbl2 = read.csv(file=fileName, head=h, sep=",") 
predict(fitted,"event",dtbl2) 

вызвало категориальные переменные являются факторами с различным числом уровней (подмножество уровней оригинального обучающего набора).

Я использовал следующий код для решения этой проблемы.

for(i in 1:dim(dtbl2)[2]){ 
    dtbl2[[i]] = factor(dtbl2[[i]],levels = levels(dtbl1[[i]])) 
} 

пакет путь bnlearn делает прилегание модели со смешанными переменными, а также предоставляет функции для предсказания в них.

Смежные вопросы