                       (c/solve)
                       (c/mmult matrix)))))))
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; for model and predict
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defrecord Model [ass bs betas])
 
 (defn train-model

          (reduce +-exp)
          (exp-result)))))

(defn model-check
  "At first, make model from dataset as a train-dataset, then it validate accuracy of model using dataset as a test-dataset."
  ([dataset L]
   {:pre [(instance? DataSet dataset) (integer? L)]
    :post [(map? %)]}
   (p :model-check
      (let [norm-dataset (DataSet. (:classes dataset) (data/normalize (:features dataset)))]
        (train-to-eval L norm-dataset norm-dataset)))))

(defn -main [& args]
  {:pre [(string? (first args))]}

    (-> (train-model train-data L)
        (#(pmap (fn [feature] (predict % feature)) (:features test-data)))
        (#(evaluation (:classes test-data) % exp)))))

(defn model-check
  "At first, make model from dataset as a train-dataset, then it validate accuracy of model using dataset as a test-dataset."
  ([dataset L]
   {:pre [(instance? DataSet dataset) (integer? L)]
    :post [(map? %)]}
   (p :model-check
      (let [norm-dataset (DataSet. (:classes dataset) (data/normalize (:features dataset)))]
        (train-to-eval L norm-dataset norm-dataset)))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; cross validation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn _cross-validate
  ([dataset a b L]
