Я пытаюсь получить среднее значение массива и ковариационную матрицу из структуры данных, которая 1000x2
, используя incanter
.
Мой тестовый пример выглядит так
(ns test.mean-cov
(:require clojure.string
[incanter.core :as in-core]
[incanter.stats :as in-stats])
(:use clojure.java.io))
(def test-mat [[1 2] [2 2]])
(in-stats/mean test-mat)
который я запускаю в LightTable.
Ошибка, которую я получаю, заключается в следующем:
java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to java.lang.Number
Numbers.java:1104 clojure.lang.Numbers.double_array
stats.clj:1492 incanter.stats/mean
Я не могу сказать, что понимаю это, и, к сожалению, мой гуглинг не помогает. Может ли кто-нибудь предложить простое объяснение и решение?
Естественно, одним ужасным способом сделать это было бы
(def c1 (first (transpose test-mat)))
(def c2 (second (transpose test-mat)))
(def data-cov-mat [[(in-stats/covariance c1 c1) (in-stats/covariance c1 c2)] [(in-stats/covariance c2 c1) (in-stats/covariance c2 c2)]])
Полное раскрытие: я новичок в clojure.
Спасибо
mean
ожидает последовательность чисел; вы передаете ему последовательность последовательностей. - person Mars   schedule 24.07.2015