start with pfl learning.

This commit is contained in:
Vitor Santos Costa
2012-06-22 19:00:12 +01:00
parent 5fe052a3ef
commit 87e0b67e76
10 changed files with 141 additions and 14 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,40 @@
% learn distribution for school database.
:- ['../sprinkler.pfl'].
:- use_module(library(clpbn/learning/em)).
%% data(t,t,t,t).
data(t,f,_,t).
%% data(_,t,_,t).
%% data(t,t,f,f).
%% data(t,t,f,t).
%% data(t,_,_,t).
%% data(t,f,t,t).
%% data(t,t,f,t).
%% data(t,_,f,f).
%% data(t,t,f,f).
%% data(f,f,t,t).
%% data(t,t,_,f).
%% data(t,f,f,t).
%% data(t,f,t,t).
%:- clpbn:set_clpbn_flag(em_solver,gibbs).
%:- clpbn:set_clpbn_flag(em_solver,jt).
%:- clpbn:set_clpbn_flag(em_solver,ve).
:- clpbn:set_clpbn_flag(em_solver,bp).
timed_main :-
statistics(runtime, _),
main(Lik),
statistics(runtime, [T,_]),
format('Took ~d msec and Lik ~3f~n',[T,Lik]).
main(Lik) :-
findall(X,scan_data(X),L),
em(L,0.01,10,_,Lik).
scan_data(example([wet_grass(W),sprinkler(S),rain(R),cloudy(C)])) :-
data(W, S, R, C).

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,33 @@
:- style_check(all).
:- ensure_loaded(library(pfl)).
% 1. define domain of random variables
% not necessary if they are boolean.
% 2. define parfactors
bayes cloudy ; cloudy_table ; [].
bayes sprinkler, cloudy ; sprinkler_table ; [].
bayes rain, cloudy ; rain_table ; [].
bayes wet_grass, sprinkler, rain ; wet_grass_table ; [].
% 3. define CPTs.
wet_grass_table([1.0,0.1,0.1,0.01,
0.0,0.9,0.9,0.99]).
sprinkler_table([0.5,0.9,
0.5,0.1]).
rain_table([0.8,0.2,
0.2,0.8]).
cloudy_table([0.5,0.5]).