我正在尝试实现以下链接 http://data-sorcery.org/category/pca/ 并发现自己在尝试加载必要的 Incanter 库时遇到了困难,即

(use '(incanter core stats charts datasets))

我对 Incanter 的唯一依赖是 [incanter "1.5.4"] 。这足以加载库吗,我是不是遗漏了什么?

我不太确定如何在链接中加载 4 个突出显示的库。请注意,我之前已经能够在 REPL 中使用 Incanter。

编辑 :我的文本编辑器有以下内容
(ns my-namespace.filename
(:use [incanter.core]
      [incanter.stats]
      [incanter.charts]
      [incanter.datasets]))


(def iris (to-matrix (get-dataset :iris)))
(view iris)

返回错误 CompilerException javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name, compiling:(pca.clj:11:22)
该错误似乎源于内部部分,即 get-dataset ......我不确定如何修复。

最佳答案

有时 Incanter 的库(作为依赖项包含在内)和 Incanter 的命名空间之间存在混淆。一个库可以包含多个命名空间,例如 incanter-core 包括 incanter.coreincanter.stats 等,而 incanter.datasets 在 incanter-io 库中(与 incanter.io 一起),而 incanter.charts 在 incanter-charts 库中。

如果将 incanter 作为依赖项包含在 project.clj 中,则它将包含 Incanter 提供的所有库和命名空间。

当人们只想使用其一小部分功能时,例如,仅使用 incanter.stats + incanter.datasets 时,Incanter 被拆分为许多库以减少依赖项的数量。

您可以在 following presentation 中找到有关 Incanter 库的一些信息

已编辑 :当数据集总是从 Internet 下载时,SSL 的问题源于旧错误。有关详细信息,请参阅 this issue...

我两天前提交了修复程序,但它仍然只在主版本中,没有发布。要在发布版本中修复它,请将以下内容添加到您的 project.clj :

:jvm-opts ["-Djsse.enableSNIExtension=false"]

这将防止错误。如果您不想从 Internet 下载数据集,您可以通过 get-dataset 的选项明确地将路径传递给它们:
(get-dataset :iris :from-repo false
              :incanter-home "/Users/ott/projects/incanter")
:incanter-home 路径应该指向存储 Incanter 的 data 文件夹的目录。

关于clojure - 咒语依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22599712/

10-09 05:04