我正在尝试实现以下链接 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.core
、 incanter.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/