(ns code.experiments.k_means (:use (code.utils utils nway)) (:use (code.learners.kmeans k_means_model k_means_classifier)) (:use (incanter core stats))) (defn k-means-exp [k n D dist] (loop [i 0 d (make-random-data D) S (println "running...") results (transient [])] (if (empty? d) (println "pd/pf =" (org-data (apply vector (apply concat (persistent! results))))) (recur (inc i) (rest d) (println "run" (+ 1 i) "working...") (conj! results (let [trainer (fn [data] (k-means-model k data dist)) tester (fn [one clusters] (vector (last one) (k-means-classifier (butlast one) clusters dist))) klasses (fn [] (map #(last (first %)) (group-by D (- (ncol D) 1))))] (map #(abcd-stats (first %) (second %) (klasses)) (nway n (first d) trainer tester))))))))