(ns code.utils.folds (:use (code.utils utils)) (:use (incanter core))) (defn folds1 [D nfolds] (let [break (Math/ceil (/ (count D) (* 1.0 nfolds)))] (loop [i 0 result (transient [])] (if (= i nfolds) (persistent! result) (recur (inc i) (conj! result (if (= i 4) (sel D :rows (range (* i break) (nrow D))) (sel D :rows (range (* i break) (* (inc i) break)))))))))) (defn folds [D nfolds] (let [nfold (folds1 D nfolds)] (loop [i 0 result (transient [])] (if (>= i nfolds) (persistent! result) (recur (inc i) (conj! result {:index i :test (nth nfold i) :train (matrix (apply concat (filter #(not= (nth nfold i) %) nfold)))}))))))