问题标签 [incanter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 使用 Incanter 在 Clojure 中使用 BFGS 最小化算法进行逻辑回归
我正在尝试使用Incanter 数据分析库在 Clojure 中实现一个简单的逻辑回归示例。我已经成功编写了 Sigmoid 和 Cost 函数,但是 Incanter 的 BFGS 最小化函数似乎给我带来了一些麻烦。
当我尝试(minimize (cost-func X y) (matrix [0 0]))
给出minimize
一个函数并启动参数时,REPL 会抛出一个错误。
我对最小化函数的期望是什么感到非常困惑。
作为参考,我用 python 重写了它,所有代码都按预期运行,使用相同的最小化算法。
输出
我不明白为什么 Python 代码可以成功运行,但我的 Clojure 实现却失败了。有什么建议么?
更新
重新阅读文档字符串,因为minimize
我一直在尝试计算其导数cost-func
会引发新错误。
使用trans
将 1xn col 矩阵转换为 nx1 行矩阵只会产生相同的错误和相反的错误。
:asize [1 2], :bsize [2 1]}
我很迷失在这里。
clojure - Incanter 用多个系列标记时间序列图
我有一个 incanter 时间序列图表,我似乎无法在正确的序列标签上生成它。我的数据如下所示:
我尝试将系列标签设置为一小组字符串,但第一个系列的图表上只显示第一个值。我绘制图表的(不正确的示例)代码如下所示:
任何指针都非常感谢。
clojure - Incanter - 如何使用带有列关键字而不是 nth 的过滤器?
显然这是因为过滤器的匿名函数正在查看 LazySeq,它不再将列名作为其结构的一部分,因此上面的代码甚至无法编译。我的问题是:Incanter 是否有办法执行此过滤查询,仍然允许我使用列关键字?例如,我可以让它工作,因为我知道 :Volume 是第 5 列
不过,我还是想看看 Incanter 是否有办法为这种类型的过滤查询保留 column 关键字。
clojure - Incanter - add-derived-column 在哪里?
add-derived-column 函数似乎非常适合我想要的,即计算多列值的平均值并将平均值添加到数据集中。第一个问题:我(使用'(incanter core datasets ...))。但是当我运行这个测试时: (add-derived-column :het [:a :b] (fn [:a :b] (+ :a :b)) data1) repl 说“无法解析符号:add-派生列'。这与文档中给出的示例相同。incanter 文档表明该功能是“核心”的一部分。此功能是否已移至另一个包或我在做一些愚蠢的事情。假设这个函数没有丢失第二个问题(即将到来):对于列向量,我可以使用它来代替:(def colnames [:a :b :c ..]) (add-deriv... :newcol colnames (fn [ colnames](一些计算))datavals)?
maven - 在 clojars 或 maven 中找不到 incanter-datasets 或 -stats jar
我在尝试使用咒语时遇到了一些非常奇怪的事情。在我的 lein project.clj 文件中,我为 -datasets 和 -stats(以及核心等)设置了依赖关系,然后执行“lein deps”,它报告在 maven 或 clojar repos 中找不到这些 jar。当我查看 ~/.m2/repositories/incanter 时,有 1.5.4 数据集和统计数据的文件夹,但它们不包含 jars。所有其他 incanter 软件包都有 1.5.4 jar 和旧版本,例如 1.4.1。希望有人可以阐明这些丢失的物品。
clojure - 为什么除了 incanter 本身之外,命名空间还需要 clojure/core/matrix 类或 .clj?
在我拥有的 .clj 文件中(使用 '(incanter core io ...))。尝试评估该代码时会发生此错误:FileNotFoundException 无法在类路径上找到 clojure/core/matrix__init.class 或 clojure/core/matrix.clj:clojure.lang.RT.load (RT.java:443)。如果我将代码更改为:(使用'(incanter)),那么一切都可以,除了没有必要的命名空间可用,这是可以预料的。在过去的 18 个月里,我一直非常愉快地使用带有 clojure 插件的 jEdit,并仔细验证了我的类路径是正常的。我尝试(使用'...math.combinatorics)和csv & json jars(这些都正常)来合理地确定这不是jEdit配置问题。我在 clojure/core jar 中寻找“矩阵”,但没有找到。非常感谢解决此问题的任何帮助。
经过进一步调查:我想我已经找到了我的问题的根源:在 clatrix-0.3.0 命名空间声明中需要 clojure.core.matrix。当我从类路径中删除 clatrix 并评估(使用'(incanter core ...))时,会发生此错误: FileNotFoundException Could not locate clatrix/core__init.class or clatrix/core.clj on classpath: clojure.lang.RT.load ( RT.java:443)。将 clatrix 添加到类路径时,会发生我原来的错误(即找不到 clojure.core.matrix)。Incanter-core 确实有一个 Matrix.class 文件。似乎 incanter 依赖于 clatrix,而 clatrix 又依赖于 clojure.core。不存在的矩阵。如何解决这个问题或有解决方法?
clojure - 咒术依赖
我正在尝试实现以下链接http://data-sorcery.org/category/pca/并发现自己试图加载必要的 Incanter 库,即
我对 Incanter 的唯一依赖是[incanter "1.5.4"]
. 这足以加载库吗,我只是错过了什么吗?
我不太确定如何加载链接中突出显示的 4 个库。需要注意的是,我之前已经能够在 REPL 中使用 Incanter。
编辑:我的文本编辑器具有以下内容
返回错误CompilerException javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name, compiling:(pca.clj:11:22)
该错误似乎源于内部,即get-dataset ...我不确定如何修复。
clojure - 打开 REPL 时出现的问题
每当我启动一个新的 REPL 时,我总是会收到相同的信息,即
我一直在使用的命名空间是ns test-app.core
REPL 仍然继续出现,我可以用它执行代码。我只是不确定这是否会导致未来的问题,例如尝试使用 incanter 或其他库。
clojure - 将 Incanter 矩阵转换为嵌套向量
考虑一个输出 Incanter 矩阵的函数。
这是一个包含函数输出的示例矩阵:
我想继续分析代表点的矩阵行。我想输入 Incanter 矩阵以将嵌套向量作为输入的函数。
所以该函数需要表格中的上述数据
我不确定如何执行从 Incanter 矩阵表示到嵌套向量结构的转换。有没有一种简单的方法来转换数据的表示?
clojure - 绘制嵌套向量
考虑一个输出嵌套向量的函数,例如
在单括号之间,即[-0.6925523827697917 -0.4095089425269985]
,是要在笛卡尔坐标中绘制的数字。
此外,另一个括号内还有向量,即
[[0.7203362514229046 -0.3494564274369062]]
这表示一个集群。
我正在寻求绘制点,即上面的向量,并绘制一条连接集群内点的线。因此,集群内的点将[[-0.6925523827697917 -0.4095089425269985] [-0.03856010899727634 0.8427233420960013] [-2.609986195686694E-13 -1.680032093051418E-12]]
被连接起来。
我的第一个想法是使用 Incanter 的 xy 图。我不确定的部分是如何从诸如向量之类的索引结构到绘图上的一个点。此外,我不确定如何绘制连接聚集点的线。上面的示例应该有一条线(最好是平滑的)通过第一个集群中的三个点,并且没有一条线通过最后一个集群,因为集群中只有一个点。