我正在尝试从正在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的新手。
谢谢