2012-07-03 19:48:13 +01:00
|
|
|
% learn distribution for school database.
|
|
|
|
|
|
|
|
:- use_module(library(pfl)).
|
|
|
|
|
|
|
|
:- use_module(library(clpbn/learning/em)).
|
|
|
|
|
|
|
|
bayes abi(K)::[h,m,l] ; abi_table ; [professor(K)].
|
|
|
|
|
|
|
|
bayes pop(K)::[h,m,l], abi(K) ; pop_table ; [professor(K)].
|
|
|
|
|
|
|
|
abi_table([0.3,0.3,0.4]).
|
|
|
|
|
|
|
|
pop_table([0.3,0.3,0.4,0.3,0.3,0.4,0.3,0.3,0.4]).
|
|
|
|
|
2012-08-15 22:01:45 +01:00
|
|
|
goal_list([/*abi(p0,h),
|
2012-07-03 19:48:13 +01:00
|
|
|
abi(p1,m),
|
|
|
|
abi(p2,m),
|
2012-08-15 22:01:45 +01:00
|
|
|
abi(p3,m),*/
|
2012-08-13 15:23:36 +01:00
|
|
|
abi(p4,l),
|
2012-07-03 19:48:13 +01:00
|
|
|
pop(p5,h),
|
|
|
|
abi(p5,_),
|
|
|
|
abi(p6,_),
|
|
|
|
pop(p7,_)]).
|
|
|
|
|
2012-08-15 22:01:45 +01:00
|
|
|
professor(p0).
|
2012-07-03 19:48:13 +01:00
|
|
|
professor(p1).
|
|
|
|
professor(p2).
|
|
|
|
professor(p3).
|
|
|
|
professor(p4).
|
|
|
|
professor(p5).
|
|
|
|
professor(p6).
|
|
|
|
professor(p7).
|
|
|
|
professor(p8).
|
|
|
|
|
|
|
|
%:- clpbn:set_clpbn_flag(em_solver,gibbs).
|
|
|
|
%:- clpbn:set_clpbn_flag(em_solver,jt).
|
2012-09-29 11:50:00 +01:00
|
|
|
:- clpbn:set_clpbn_flag(em_solver,hve).
|
|
|
|
:- clpbn:set_clpbn_flag(em_solver,ve).
|
|
|
|
%:- clpbn:set_clpbn_flag(em_solver,bp).
|
|
|
|
%:- clpbn:set_clpbn_flag(em_solver,bdd).
|
2012-07-03 19:48:13 +01:00
|
|
|
|
|
|
|
timed_main :-
|
|
|
|
statistics(runtime, _),
|
|
|
|
main(Lik),
|
|
|
|
statistics(runtime, [T,_]),
|
|
|
|
format('Took ~d msec and Lik ~3f~n',[T,Lik]).
|
|
|
|
|
|
|
|
main(Lik) :-
|
|
|
|
goal_list(L),
|
|
|
|
% run_queries(L),
|
|
|
|
em(L,0.01,10,_,Lik).
|
|
|
|
|
|
|
|
run_queries([]).
|
|
|
|
run_queries(Q.L) :-
|
|
|
|
call(Q),
|
|
|
|
run_queries(L).
|
|
|
|
|
|
|
|
|
|
|
|
|