Fixed saving/loading csv instances.
This commit is contained in:
parent
0da42ca0ea
commit
26a9d69c05
2 changed files with 32 additions and 5 deletions
|
@ -10,7 +10,8 @@
|
||||||
(:import (weka.core.converters CSVLoader ArffLoader XRFFLoader LibSVMLoader)
|
(:import (weka.core.converters CSVLoader ArffLoader XRFFLoader LibSVMLoader)
|
||||||
(weka.core.converters CSVSaver ArffSaver XRFFSaver LibSVMSaver)
|
(weka.core.converters CSVSaver ArffSaver XRFFSaver LibSVMSaver)
|
||||||
(java.io File InputStream OutputStream)
|
(java.io File InputStream OutputStream)
|
||||||
(java.net URL URI)))
|
(java.net URL URI))
|
||||||
|
(:use [clojure.java.io :only [input-stream output-stream]]))
|
||||||
|
|
||||||
|
|
||||||
;; Loading of instances
|
;; Loading of instances
|
||||||
|
@ -21,10 +22,10 @@
|
||||||
|
|
||||||
(defmacro m-load-instances [loader source]
|
(defmacro m-load-instances [loader source]
|
||||||
`(do
|
`(do
|
||||||
(if (= (class ~source) java.io.File)
|
(if (= (class ~source) java.io.File)
|
||||||
(.setFile ~loader ~source)
|
(.setFile ~loader ~source)
|
||||||
(.setSource ~loader (if (= (class ~source) java.lang.String)
|
(.setSource ~loader (if (= (class ~source) java.lang.String)
|
||||||
(new URL ~source)
|
(input-stream ~source)
|
||||||
^InputStream ~source)))
|
^InputStream ~source)))
|
||||||
(.getDataSet ~loader)))
|
(.getDataSet ~loader)))
|
||||||
|
|
||||||
|
@ -58,7 +59,7 @@
|
||||||
(defmacro m-save-instances [saver destiny instances]
|
(defmacro m-save-instances [saver destiny instances]
|
||||||
`(do
|
`(do
|
||||||
(condp #(isa? %2 %1) (class ~destiny)
|
(condp #(isa? %2 %1) (class ~destiny)
|
||||||
String (.setFile ~saver (File. (URI. ~destiny)))
|
String (.setDestination ~saver (output-stream ~destiny))
|
||||||
File (.setFile ~saver ~destiny)
|
File (.setFile ~saver ~destiny)
|
||||||
OutputStream (.setDestination ~saver ~destiny))
|
OutputStream (.setDestination ~saver ~destiny))
|
||||||
(.setInstances ~saver ~instances)
|
(.setInstances ~saver ~instances)
|
||||||
|
|
|
@ -2,6 +2,32 @@
|
||||||
(:use [clj-ml io data] :reload-all)
|
(:use [clj-ml io data] :reload-all)
|
||||||
(:use clojure.test midje.sweet))
|
(:use clojure.test midje.sweet))
|
||||||
|
|
||||||
(deftest load-instances-iris-url
|
(deftest test-load-instances-iris-arff-url
|
||||||
(let [ds (load-instances :arff "http://repository.seasr.org/Datasets/UCI/arff/iris.arff")]
|
(let [ds (load-instances :arff "http://repository.seasr.org/Datasets/UCI/arff/iris.arff")]
|
||||||
(is (= 150 (dataset-count ds)))))
|
(is (= 150 (dataset-count ds)))))
|
||||||
|
|
||||||
|
(deftest test-load-instances-iris-csv-url
|
||||||
|
(let [ds (load-instances :csv "https://raw.github.com/bigmlcom/bigmler/master/data/iris.csv")]
|
||||||
|
(is (= 150 (dataset-count ds)))))
|
||||||
|
|
||||||
|
(deftest test-save-instances
|
||||||
|
(let [ds (make-dataset "test" [:a :b {:c [:m :n]}] [[1 2 :m] [4 5 :m]])]
|
||||||
|
(is (= (do (save-instances :csv "test.csv" ds)
|
||||||
|
(slurp "test.csv"))
|
||||||
|
"a,b,c
|
||||||
|
1,2,m
|
||||||
|
4,5,m
|
||||||
|
"))
|
||||||
|
(is (= (do (save-instances :arff "test.arff" ds)
|
||||||
|
(slurp "test.arff"))
|
||||||
|
"@relation test
|
||||||
|
|
||||||
|
@attribute a numeric
|
||||||
|
@attribute b numeric
|
||||||
|
@attribute c {m,n}
|
||||||
|
|
||||||
|
@data
|
||||||
|
1,2,m
|
||||||
|
4,5,m
|
||||||
|
"))))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue