| 
									
										
										
										
											2009-02-16 12:23:29 +00:00
										 |  |  | % learn distribution for school database. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | % we do not consider the aggregates yet. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :- [pos:train]. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-21 00:05:23 +01:00
										 |  |  | :- ['~/Yap/work/packages/CLPBN/clpbn/examples/School/school_32']. | 
					
						
							| 
									
										
										
										
											2009-02-16 12:23:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-21 00:05:23 +01:00
										 |  |  | :- ['~/Yap/work/packages/CLPBN/learning/em']. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %:- clpbn:set_clpbn_flag(em_solver,gibbs). | 
					
						
							|  |  |  | :- clpbn:set_clpbn_flag(em_solver,jt). | 
					
						
							|  |  |  | %:- clpbn:set_clpbn_flag(em_solver,vel). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | timed_main :- | 
					
						
							|  |  |  | 	statistics(runtime, _), | 
					
						
							|  |  |  | 	findall(X,goal(X),L), | 
					
						
							|  |  |  |         em(L,0.01,10,_,Lik), | 
					
						
							|  |  |  | 	statistics(runtime, [T,_]), | 
					
						
							|  |  |  | 	format('Took ~d msec and Lik ~3f~n',[T,Lik]). | 
					
						
							| 
									
										
										
										
											2009-02-16 12:23:29 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | main :- | 
					
						
							|  |  |  |         findall(X,goal(X),L), | 
					
						
							|  |  |  |         em(L,0.01,10,CPTs,Lik), | 
					
						
							|  |  |  |         writeln(Lik:CPTs). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | % | 
					
						
							| 
									
										
										
										
											2009-10-21 00:05:23 +01:00
										 |  |  | % change to 0.0, 0.1, 0.2 to make things simpler/harder | 
					
						
							| 
									
										
										
										
											2009-02-16 12:23:29 +00:00
										 |  |  | % | 
					
						
							| 
									
										
										
										
											2009-10-21 00:05:23 +01:00
										 |  |  | missing(0.50). | 
					
						
							| 
									
										
										
										
											2009-02-16 12:23:29 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | % miss 30% of the examples. | 
					
						
							|  |  |  | goal(professor_ability(P,V)) :- | 
					
						
							|  |  |  |         pos:professor_ability(P,V1), | 
					
						
							|  |  |  | 	missing(X), | 
					
						
							|  |  |  |         ( random > X -> V = V1 ; true). | 
					
						
							|  |  |  | % miss 10% of the examples. | 
					
						
							|  |  |  | goal(professor_popularity(P,V)) :- | 
					
						
							|  |  |  |         pos:professor_popularity(P,V1), | 
					
						
							|  |  |  | 	missing(X), | 
					
						
							|  |  |  |         ( random > X -> V = V1 ; true). | 
					
						
							|  |  |  | goal(registration_grade(P,V)) :- | 
					
						
							|  |  |  |         pos:registration_grade(P,V1), | 
					
						
							|  |  |  | 	missing(X), | 
					
						
							|  |  |  |         ( random > X -> V = V1 ; true). | 
					
						
							|  |  |  | goal(student_intelligence(P,V)) :- | 
					
						
							|  |  |  |         pos:student_intelligence(P,V1), | 
					
						
							|  |  |  | 	missing(X), | 
					
						
							|  |  |  |         ( random > X -> V = V1 ; true). | 
					
						
							|  |  |  | goal(course_difficulty(P,V)) :- | 
					
						
							|  |  |  |         pos:course_difficulty(P,V1), | 
					
						
							|  |  |  | 	missing(X), | 
					
						
							|  |  |  |         ( random > X -> V = V1 ; true). | 
					
						
							|  |  |  | goal(registration_satisfaction(P,V)) :- | 
					
						
							|  |  |  |         pos:registration_satisfaction(P,V1), | 
					
						
							|  |  |  | 	missing(X), | 
					
						
							|  |  |  |         ( random > X -> V = V1 ; true). |