clj-ml/test/clj_ml/data_test.clj
2010-03-03 14:46:08 +01:00

118 lines
3.8 KiB
Clojure

(ns clj-ml.data-test
(:use [clj-ml.data] :reload-all)
(:use [clojure.test]))
(deftest make-instance-num
(let [dataset (make-dataset :test
[:a :b]
1)
inst (make-instance dataset [1 2])]
(is (= (class inst)
weka.core.Instance))
(is (= 2 (.numValues inst)))
(is (= 1.0 (.value inst 0)))
(is (= 2.0 (.value inst 1)))))
(deftest make-instance-ord
(let [dataset (make-dataset :test
[:a {:b [:b1 :b2]}]
1)
inst (make-instance dataset [1 :b1])]
(is (= (class inst)
weka.core.Instance))
(is (= 2 (.numValues inst)))
(is (= 1.0 (.value inst 0)))
(is (= "b1" (.stringValue inst 1)))))
(deftest dataset-make-dataset-with-default-class
(let [ds (clj-ml.data/make-dataset :test [:a :b {:c [:d :e]}] [] {:class :c})
ds2 (clj-ml.data/make-dataset :test [:a :b {:c [:d :e]}] [] {:class 2})]
(is (= (clj-ml.data/dataset-get-class ds)
2))
(is (= (clj-ml.data/dataset-get-class ds2)
2))))
(deftest dataset-change-class
(let [dataset (make-dataset :test
[:a :b]
2)
foo(clj-ml.data/dataset-set-class dataset 1)]
(is (= 1 (.classIndex dataset)))
(is (= 0 (.classIndex (dataset-set-class dataset 0))))))
(deftest dataset-count-1
(let [dataset (make-dataset :test
[:a :b]
2)]
(dataset-add dataset [1 2])
(is (= 1 (dataset-count dataset)))))
(deftest dataset-add-1
(let [dataset (make-dataset :test
[:a :b]
2)]
(dataset-add dataset [1 2])
(let [inst (.lastInstance dataset)]
(is (= 1.0 (.value inst 0)))
(is (= 2.0 (.value inst 1))))))
(deftest dataset-add-2
(let [dataset (make-dataset :test
[:a :b]
2)
instance (make-instance dataset [1 2])]
(dataset-add dataset instance)
(let [inst (.lastInstance dataset)]
(is (= 1.0 (.value inst 0)))
(is (= 2.0 (.value inst 1))))))
(deftest dataset-extract-at-1
(let [dataset (make-dataset :test
[:a :b]
2)]
(dataset-add dataset [1 2])
(let [inst (.lastInstance dataset)]
(is (= 1.0 (.value inst 0)))
(is (= 2.0 (.value inst 1)))
(let [inst-ext (dataset-extract-at dataset 0)]
(is (= 0 (.numInstances dataset)))
(is (= 1.0 (.value inst-ext 0)))
(is (= 2.0 (.value inst-ext 1)))))))
(deftest dataset-pop-1
(let [dataset (make-dataset :test
[:a :b]
2)]
(dataset-add dataset [1 2])
(let [inst (.lastInstance dataset)]
(is (= 1.0 (.value inst 0)))
(is (= 2.0 (.value inst 1)))
(let [inst-ext (dataset-pop dataset)]
(is (= 0 (.numInstances dataset)))
(is (= 1.0 (.value inst-ext 0)))
(is (= 2.0 (.value inst-ext 1)))))))
(deftest dataset-seq-1
(let [dataset (make-dataset :test [:a :b {:c [:e :f]}] [[1 2 :e] [3 4 :f]])
seq (dataset-seq dataset)]
(is (sequential? seq))))
(deftest working-sequences
(let [ds (make-dataset "test" [:a :b {:c [:d :e]}] [{:a 1 :b 2 :c :d} [4 5 :e]])]
(is (= 2 (dataset-count ds)))
(let [dsm (map #(instance-to-map %1) (dataset-seq ds))]
(is (= 2 (count dsm)))
(is (= 1.0 (:a (first dsm))))
(let [dsb (make-dataset "test" [:a :b {:c [:d :e]}] dsm)]
(is (= 2 (dataset-count dsb)))))))
(deftest dataset-instance-predicates
(let [ds (make-dataset "test" [:a :b {:c [:d :e]}] [{:a 1 :b 2 :c :d} [4 5 :e]])
inst (dataset-at ds 0)]
(is (is-dataset? ds))
(is (not (is-dataset? inst)))
(is (is-instance? inst))
(is (not (is-instance? ds)))))