Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用白炽灯从clojure中的阵列中获取均值和协方差矩阵_Java_Clojure_Incanter - Fatal编程技术网

Java 使用白炽灯从clojure中的阵列中获取均值和协方差矩阵

Java 使用白炽灯从clojure中的阵列中获取均值和协方差矩阵,java,clojure,incanter,Java,Clojure,Incanter,我试图使用incanter从1000x2的数据结构中获取数组平均值和协方差矩阵 我的测试用例看起来是这样的 (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/m

我试图使用
incanter
1000x2
的数据结构中获取数组平均值和协方差矩阵

我的测试用例看起来是这样的

(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)
我在LighTable中跑步

我得到的错误是:

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的新手


感谢

对于矩阵协方差,您需要使用以下各项:

(in-stats/covariance (in-core/matrix test-mat))
对于矩阵平均向量:

(mapv in-stats/mean (in-core/trans test-mat))

mean
需要一系列数字;你在传递一系列的序列。嗯
(在stats/convariance(在core/matrix test mat中))
返回
java.lang.ClassCastException:java.lang.Boolean不能转换为java.lang.Number
@Astrid您的矩阵中很可能有一个布尔值。这个示例矩阵会导致相同的异常:
(def test mat[[12][2 true]])
我做的很奇怪:
(def test mat[[12][2]])
然后
(在stats/convariance(在core/matrix test mat中))
这会给出
java.lang.ClassCastException:java.lang.Boolean不能转换为java.lang.Number