3

次のリンク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 に起因するようです...修正方法がわかりません。

4

2 に答える 2

7

REPL から依存関係をロードできたと言うので、lein からロードしようとしていると思います。

に依存関係を含める必要がありますproject.clj

(defproject my-project "0.1.0-SNAPSHOT"
  :dependencies [[incanter "1.5.4"]])

関数を使用するファイルの先頭にincanter、次のいずれかを適切な名前空間とファイル名と共に配置します。

(ns my-namespace.filename
  (:require (incanter [core :refer :all]
                      [stats :refer :all]
                      [charts :refer :all]
                      [datasets :refer :all]))

これは次と同じです。

(ns my-namespace.filename
  (:require [incanter.core :refer :all]
            [incanter.stats :refer :all]
            [incanter.charts :refer :all]
            [incanter.datasets :refer :all]))

と同じ:

(ns my-namespace.filename
  (:use [incanter.core]
        [incanter.stats]
        [incanter.charts]
        [incanter.datasets]))

:refer :all通常、すべての依存関係を使用したくないため、一貫性のために最初のバリエーションを使用します。

于 2014-03-24T02:58:35.783 に答える
3

Incanter のライブラリ (依存関係として含まれる) と Incanter の名前空間の間で混乱が生じることがあります。1 つのライブラリには多くの名前空間を含めることができます。たとえば、incanter-core にはincanter.coreincanter.statsなどがありますincanter.datasetsが、 は incanter-io ライブラリにあり ( とともにincanter.io)、incanter.chartsincanter-charts ライブラリにはあります。

incanteras 依存関係を に含めるproject.cljと、Incanter が提供するすべてのライブラリと名前空間が含まれます。

incanter.statsIncanter は多くのライブラリに分割され、たとえば+のみなど、機能のごく一部のみを使用したい場合の依存関係の数を減らしますincanter.datasets

次のプレゼンテーションで見つけることができる Incanter のライブラリに関する情報

編集: SSL の問題は、データセットが常にインターネットからダウンロードされたときの古いバグから発生します。詳細は本号をご覧ください...

2 日前に修正をコミットしましたが、まだマスターのみでリリースされていません。リリース バージョンで修正するには、以下を に追加しますproject.clj

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

これにより、エラーが防止されます。インターネットからデータセットをダウンロードしたくない場合は、get-datasetのオプションを使用して明示的にデータセットへのパスを渡すことができます。

(get-dataset :iris :from-repo false 
              :incanter-home "/Users/ott/projects/incanter")

パスは:incanter-home、Incanter のdataフォルダーが格納されているディレクトリを指す必要があります。

于 2014-03-24T08:24:15.257 に答える