(defun bayes-classify (one tbl &optional (m 2) (k 1)) (let* ((classes (klasses tbl)) (nclasses (nklasses tbl)) (n (f tbl)) (classi (table-class tbl)) (like most-negative-fixnum) (classification (first classes))) (dolist (class classes) (let* ((prior (/ (+ (f tbl class) k) (+ n (* k nclasses)))) (tmp (log prior))) (doitems (feature i one) (unless (= classi i) (unless (unknownp feature) (let ((delta (if (numericp (nth i (columns-header (table-columns tbl)))) (pdf (gethash class (header-f (nth i (table-columns tbl)))) feature) (/ (+ (f tbl class i feature) (* m prior)) (+ (f tbl class) m))))) ; (print "testinf for complex") (if (complexp delta) (setf delta (log 0.000001))) ; (print "incrementing tmp") (incf tmp (log (if (< delta 0.000001) 0.000001 delta ) )))))) (when (> tmp like) (setf like tmp classification class)))) classification))