diff --git a/src/clj_ml/filters.clj b/src/clj_ml/filters.clj index dec8240..62a8655 100644 --- a/src/clj_ml/filters.clj +++ b/src/clj_ml/filters.clj @@ -71,6 +71,10 @@ :also-binary "-N" :for-each-nominal "-A"})))) +(defmethod make-filter-options :numeric-to-nominal + ([kind m] + (->> (extract-attributes m) (check-options m {:invert "-V"})))) + (defmethod make-filter-options :remove-attributes ([kind m] (->> (extract-attributes m) @@ -100,6 +104,7 @@ :unsupervised-discretize weka.filters.unsupervised.attribute.Discretize :supervised-nominal-to-binary weka.filters.supervised.attribute.NominalToBinary :unsupervised-nominal-to-binary weka.filters.unsupervised.attribute.NominalToBinary + :numeric-to-nominal weka.filters.unsupervised.attribute.NumericToNominal :remove-attributes weka.filters.unsupervised.attribute.Remove :remove-useless-attributes weka.filters.unsupervised.attribute.RemoveUseless :select-append-attributes weka.filters.unsupervised.attribute.Copy @@ -116,6 +121,7 @@ - :unsupervised-discretize - :supervised-nominal-to-binary - :unsupervised-nominal-to-binary + - :numeric-to-nominal - :remove-attributes - :remove-useless-attributes - :select-append-attributes diff --git a/test/clj_ml/filters_test.clj b/test/clj_ml/filters_test.clj index 6380ed2..29862be 100644 --- a/test/clj_ml/filters_test.clj +++ b/test/clj_ml/filters_test.clj @@ -106,3 +106,13 @@ res (make-apply-filter :remove-attributes {:attributes [0]} ds)] (is (= (dataset-format res) [:b {:c '(:m :g)}])))) + + +(deftest make-apply-filter-numeric-to-nominal + (let [ds (clj-ml.data/make-dataset :test [:a :b {:c [:g :m]}] + [ [1 2 :g] + [2 3 :m] + [4 5 :g]]) + res (make-apply-filter :numeric-to-nominal {} ds)] + (is (= (dataset-format res) + [{:a '(:4 :2 :1)} {:b '(:5 :3 :2)} {:c '(:m :g)}]))))