.


:




:

































 

 

 

 


18.3.




% :- (300, xfx, <==).

I learn{ Class): , i Class, % , Class


learnt Class):- bagof(example(ClassX, Obj), example(ClassX, Obj

learnt Examples, Class, Description), nl, write' Class), write(' <== '), nl, writelist(Description), assert (Class <== Description).


Examples), % % % %

%


% learnt Examples, Class, Description):

% Description Class

% . Examples


learnt Examples, Class, []):-not member(example! Class,


), Examples).


% , %


 


learn(Examples, Class, [Conj I Conjs]): learn_conj (Examples, Class, Conj), remove(Examples, Conj, RestExamples),

learnt RestExamples, Class, Conjs).


% , % Conj % %


% learn_conj| Examples, Class, Conj):

% Conj - ,
% Class -

%


learn_conj (Examples, Class, []) not (member! example(ClassX, ClassX \== Class),!.


: -


), Examples), % - %


 


learn_conj (Examples, Class, [Cond | Conds]) choose_cond(Examples, Class, Cond), filter (Examples, [ Cond], Examplesl), learn_conj(Examplesl, Class, Conds).


: -


%


choose_cond I Examples, Class, AttVal):-

findalK AV/Score, score! Examples, Class, AV, Score), AVs),
best! AVs, AttVal). %


18.



best( [ AttVal/_], AttVal).

best([ AVO/SC, AV1/S1 I AVSlist], AttVal):-

El > SO,!, % AVl , AVO

best{ [AV1/S1 ] AVSlist], AttVal)

best([AVO/SO AVSlist], AttVal).

% filterf Examples, Condition, Examplesl):

Examplesl Examples,

% Condition

filter Examples, Cond, Examplesl):-findalH example! Class, Obj),

< member example{ class, Obj), Examples), satisfy(Obj, Cond)),

Examplesl).

i remove(Examples, Conj, Examplesl):

Examples , Conj, % Examplesl

remove ([ ], _, [ ]).

remove [ [example < Class, Obj) I Es], Conj, Esl):-

satisfy(Obj, Conj),!, % Conj remove (Es, Conj, Esl). %

remove IE I Es] r Conj, [E I Esl]):- % remove(Es, Conj, Esl),

satisfy{ Object, Conj):-

not (member; Att = Val, Conj),

member ( Att - ValX, Object), ValX \val).

score(Examples, Class, AttVal, Score):-

candidate Examples, Class, AttVal), I

filter!' Examples, [ AttVal], Examplesl), % Examplesl

% Att = Val
length! Examples!, N1), %

count_pos[ Examplesl, Class, NPosl), %
NPosl > 0, %

% AttVal Score is 2 * HPOSl - Ml.

candidate,- Examples, Class, Att -Val):-

attribute! Att, Values), %

member; Val, values), %

suitable,- Att = Val, Examples, Class).

suitable(AttVal, Examples, class):-

%

% AttVal rr.emberf example! ClassX, ObjX), Examples),

ClassX \== Class, ,

not satisfy,- ObjX, [ AttVal]),!. % AttVal

%coimt_pos(Examples, Class, ):

% H - Class

ccmnt_pos([], _, 0).

count_pos { [example (ClassX,_) (Examples], Class, ): -count_posi Examples, Class, Ml), (ClassX = Class,!, N is Ni + 1; = N1).

424 II. Prolog


writelist t |

writelistt [X | LJ):-tab[ 2), write (X), nl, writelistt L).

: learn_con](Examples, Class, Conjunction}

Conjunction , , : Attribute = value

, ( ). , , Class.

. , , , , , . , . , , , . . . , 18.3, , . , , - . , (greedy), " " (hill-climbing). , , . , .

: , , . . . 18.9 . , , : score[ Examples, Class, AttributeValue, Score}

Score .

, 18.3, , 18.1, :

?- learnt nut), 1(key), learnf scissors). nut < = =

[ shape = compact, holes = 1] key < = =


18.



[ shape - other, size = small] (holes = 1, shape = lor.g] scissors <= [ holes = 2, size = large]

. 18.9. ; 90S . NEG . . ATTVAL, , , . ATTVAL

, learn , , . . , , , classify[ Object, Class):-

Class <= = Description, % , Class,

1
member! conj, Description), %
satisfy! Object, conj). % Object Conj





:


: 2015-10-01; !; : 518 |


:

:

, , . , .
==> ...

1537 - | 1378 -


© 2015-2024 lektsii.org - -

: 0.015 .