prolog forecast.pl
5:-use_module(library(aleph)).
6:- aleph.
7:- if(current_predicate(use_rendering/1)).
8:- use_rendering(prolog).
9:- endif.
10:- modeh(1,class(+day,-class)).
11:- modeb(1,outlook(+day,#outlook)).
12:- modeb(1,temp(+day,-temp)).
13:- modeb(1,humidity(+day,-humidity)).
14:- modeb(1,windy(+day,#windy)).
15:- modeb(*,lteq(+temp,#temp)).
16:- modeb(*,lteq(+humidity,#humidity)).
17
18:- determination(class/2,outlook/2).
19:- determination(class/2,temp/2).
20:- determination(class/2,humidity/2).
21:- determination(class/2,windy/2).
22:- determination(class/2,lteq/2).
23
24% :- aleph_set(tree_type,classification).
25:- aleph_set(tree_type,class_probability).
26:- aleph_set(classes,[play,dont_play]).
27:- aleph_set(minpos,2).
% minimum examples in leaf for splitting
28:- aleph_set(clauselength,5).
29:- aleph_set(lookahead,2).
% to allow lookahead to lteq/2
30:- aleph_set(prune_tree,true).
31:- aleph_set(confidence,0.25).
% pruning conf parameter used by C4.5
32:- aleph_set(evalfn,entropy).
33% :- aleph_set(evalfn,gini).
34:- aleph_set(dependent,2).
% second arg of class/2 is to predicted
35
36:-begin_bg.
37
38% type predicates
39outlook(sunny).
40outlook(overcast).
41outlook(rain).
42
43windy(true).
44windy(false).
45
46temp(64).
47temp(65).
48temp(68).
49temp(69).
50temp(70).
51temp(71).
52temp(75).
53temp(80).
54temp(81).
55temp(83).
56temp(85).
57
58humidity(65).
59humidity(70).
60humidity(75).
61humidity(80).
62humidity(85).
63humidity(86).
64humidity(90).
65humidity(95).
66humidity(96).
67
68
69lteq(X,Y):-
70 var(Y), !,
71 X = Y.
72lteq(X,Y):-
73 number(X), number(Y),
74 X =< Y.
75
76outlook(Day,Outlook):-
77 table(Day,Outlook,_,_,_).
78temp(Day,Temp):-
79 table(Day,_,Temp,_,_).
80humidity(Day,Humidity):-
81 table(Day,_,_,Humidity,_).
82windy(Day,Windy):-
83 table(Day,_,_,_,Windy).
84
85table(d1,sunny,75,70,true).
86table(d2,sunny,80,90,true).
87table(d3,sunny,85,85,false).
88table(d4,sunny,72,95,false).
89table(d5,sunny,69,70,false).
90table(d6,overcast,72,90,true).
91table(d7,overcast,83,86,false).
92table(d8,overcast,64,65,true).
93table(d9,overcast,81,75,false).
94table(d10,rain,71,80,true).
95table(d11,rain,65,70,true).
96table(d12,rain,75,80,false).
97table(d13,rain,68,80,false).
98table(d14,rain,70,96,false).
99
100:-end_bg.
101:-begin_in_pos.
102class(d1,play).
103class(d2,dont_play).
104class(d3,dont_play).
105class(d4,dont_play).
106class(d5,play).
107class(d6,play).
108class(d7,play).
109class(d8,play).
110class(d9,play).
111class(d10,dont_play).
112class(d11,dont_play).
113class(d12,play).
114class(d13,play).
115class(d14,play).
116:-end_in_pos.
117
118:-begin_in_neg.
119:-end_in_neg.