;;;; Author: Steve Wolfman ;;;; ;;;; This constructs a set of data points and (dummy) features ;;;; for the restaurant domain. Note that there is no way to ;;;; actually calculate the features; they must be hardcoded ;;;; in the data points. ;;;; ;;;; The data is taken from Russell and Norvig; note that ;;;; R&N's decision tree which they construct from this data ;;;; is _incorrect_ your decision tree builder should _not_ ;;;; get the same tree as them! ;; Feature set (no extractors!) (defparameter *features* '((:ALT "Is there an alternative restaurant?" (:Y :N)) (:BAR "Is there a bar at the restaurant?" (:Y :N)) (:FRI-SAT "Is it a Friday or Saturday evening?" (:Y :N)) (:HUNGRY "Are you hungry?" (:Y :N)) (:PATRONS "Is there anyone in the restaurant?" (:FULL :SOME :NONE)) (:PRICE "How pricey is the restaurant?" (:$ :$$ :$$$)) (:RAIN "Is it raining?" (:Y :N)) (:RESERVATION "Do you have reservations?" (:Y :N)) (:TYPE "What type of restaurant is it?" (:FRENCH :THAI :BURGER :ITALIAN)) (:WAIT-ETA "How long is the wait supposed to be?" (:NONE :SHORT :MEDIUM :LONG)))) ;; 12 data points for the restaurant domain. The target attribute should be ;; :will-wait. (defparameter *data* '(((:ALT . :Y) (:BAR . :N) (:FRI-SAT . :N) (:HUNGRY . :Y) (:PATRONS . :SOME) (:PRICE . :$$$) (:RAIN . :N) (:RESERVATION . :Y) (:TYPE . :FRENCH) (:WAIT-ETA . :NONE) (:WILL-WAIT . T)) ((:ALT . :Y) (:BAR . :N) (:FRI-SAT . :N) (:HUNGRY . :Y) (:PATRONS . :FULL) (:PRICE . :$) (:RAIN . :N) (:RESERVATION . :N) (:TYPE . :THAI) (:WAIT-ETA . :MEDIUM) (:WILL-WAIT . NIL)) ((:ALT . :N) (:BAR . :Y) (:FRI-SAT . :N) (:HUNGRY . :N) (:PATRONS . :SOME) (:PRICE . :$) (:RAIN . :N) (:RESERVATION . :N) (:TYPE . :BURGER) (:WAIT-ETA . :NONE) (:WILL-WAIT . T)) ((:ALT . :Y) (:BAR . :N) (:FRI-SAT . :Y) (:HUNGRY . :Y) (:PATRONS . :FULL) (:PRICE . :$) (:RAIN . :N) (:RESERVATION . :N) (:TYPE . :THAI) (:WAIT-ETA . :SHORT) (:WILL-WAIT . T)) ((:ALT . :Y) (:BAR . :N) (:FRI-SAT . :Y) (:HUNGRY . :N) (:PATRONS . :FULL) (:PRICE . :$$$) (:RAIN . :N) (:RESERVATION . :Y) (:TYPE . :FRENCH) (:WAIT-ETA . :LONG) (:WILL-WAIT . NIL)) ((:ALT . :N) (:BAR . :Y) (:FRI-SAT . :N) (:HUNGRY . :Y) (:PATRONS . :SOME) (:PRICE . :$$) (:RAIN . :Y) (:RESERVATION . :Y) (:TYPE . :ITALIAN) (:WAIT-ETA . :NONE) (:WILL-WAIT . T)) ((:ALT . :N) (:BAR . :Y) (:FRI-SAT . :N) (:HUNGRY . :N) (:PATRONS . :NONE) (:PRICE . :$) (:RAIN . :Y) (:RESERVATION . :N) (:TYPE . :BURGER) (:WAIT-ETA . :NONE) (:WILL-WAIT . NIL)) ((:ALT . :N) (:BAR . :N) (:FRI-SAT . :N) (:HUNGRY . :Y) (:PATRONS . :SOME) (:PRICE . :$$) (:RAIN . :Y) (:RESERVATION . :Y) (:TYPE . :THAI) (:WAIT-ETA . :NONE) (:WILL-WAIT . T)) ((:ALT . :N) (:BAR . :Y) (:FRI-SAT . :Y) (:HUNGRY . :N) (:PATRONS . :FULL) (:PRICE . :$) (:RAIN . :Y) (:RESERVATION . :N) (:TYPE . :BURGER) (:WAIT-ETA . :LONG) (:WILL-WAIT . NIL)) ((:ALT . :Y) (:BAR . :Y) (:FRI-SAT . :Y) (:HUNGRY . :Y) (:PATRONS . :FULL) (:PRICE . :$$$) (:RAIN . :N) (:RESERVATION . :Y) (:TYPE . :ITALIAN) (:WAIT-ETA . :SHORT) (:WILL-WAIT . NIL)) ((:ALT . :N) (:BAR . :N) (:FRI-SAT . :N) (:HUNGRY . :N) (:PATRONS . :NONE) (:PRICE . :$) (:RAIN . :N) (:RESERVATION . :N) (:TYPE . :THAI) (:WAIT-ETA . :NONE) (:WILL-WAIT . NIL)) ((:ALT . :Y) (:BAR . :Y) (:FRI-SAT . :Y) (:HUNGRY . :Y) (:PATRONS . :FULL) (:PRICE . :$) (:RAIN . :N) (:RESERVATION . :N) (:TYPE . :BURGER) (:WAIT-ETA . :MEDIUM) (:WILL-WAIT . T))))