web-dev-qa-db-ja.com

Scalaに適した数学/統計ライブラリはありますか?

scala数学と統計用の優れたオープンソースライブラリを探しています。ApacheMathやColtのようなものですが、Scalaで実装されていることを願っています。

誰かが私を正しい方向に向けることができますか?

85
dave

はい。いくつかあります:

スカララブ

ScalaLabプロジェクトは、Java仮想マシンに効率的な科学プログラミング環境を提供することを目的としています。スクリプト言語は、高レベルの科学で強化されたプログラミング言語ScalaオペレータとMatlabのような作業スタイルを提供する統合環境。

スクリプトコードは非常に高速で、Java(時には低速、時には高速)に近く、通常は同等のMatlab .mスクリプトから高速です!

スカララ Breeze に置き換えられました

Scala用の高性能の数値線形代数ライブラリ。ベクトルと行列に豊富なMatlabのような演算子があります。数値ルーチンのライブラリ。プロットのサポート。

工場

FACTORIEは、デプロイ可能な確率的モデリングのためのツールキットであり、Scalaのソフトウェアライブラリとして実装されています。ユーザーに、リレーショナルファクターグラフの作成、パラメーターの推定、および推論の実行のための簡潔な言語を提供します。

カソバリー

twitterによるグラフ処理:

Cassovaryは、数十億のエッジを持つグラフを効率的に処理するためにゼロから設計されています。いくつかの一般的なノードおよびグラフのデータ構造とトラバーサルアルゴリズムが付属しています。典型的な使用法は、大規模なグラフのマイニングと分析を行うことです。

Twitterでは、Cassovaryは「Who to Follow」や「Similar to」など、グラフベースの機能の多くを強化するために使用するスタックの最下層を形成します。また、Twitter検索と関連性を決定するアルゴリズムにも使用しますプロモート製品のユーザーに表示されます。時間が経つにつれて、これらの製品機能のいくつかから非独占的なロジックをCassovaryに導入したいと考えています。

Algebird

Twitterの抽象代数ライブラリ:

コードは、集約システムの構築を対象としています(ScaldingまたはStormを使用)。元々は、ScaldingのMatrix APIの一部として開発されたもので、マトリックスには、モノイド、グループ、またはリングの要素である値がありました。その後、Scalding内やTwitter内の他のプロジェクトで、コードの適用範囲が広がったことは明らかでした。

scala_prob

!実験的なステータスがあります!

sb_probdslは、scalaの新しい区切り付き継続サポートを使用して、単純な離散確率プログラミングサポートを提供します。

Malakov

Scalaのマルコフ連鎖ライブラリ

マルコフ連鎖は、次のステップの確率分布が現在のステップに非自明に依存するが、前のステップには依存しない確率過程を表します。このライブラリにいくつかのトレーニングデータを与えると、統計的にそれに似た新しいランダムデータが生成されます。

signal-collect

Signal/Collectは、大規模なグラフ処理のためのプログラミングモデルおよびフレームワークです。このモデルは、フレームワークが透過的に処理を並列化できるようにしながら、グラフ上で多くの反復アルゴリズムおよびデータフローアルゴリズムを簡潔に定式化するのに十分な表現力を持っています。

Grizzled.math

Statおよびユーティリティパッケージが含まれています。平均値など、非常に基本的でよく知られているものが含まれています...

確率モナド:

ライブラリではありませんが、確率を扱うのに大いに役立ちます。

143
om-nom-nom

FigaroはScala確率的プログラミングのライブラリです。Figaroの詳細については、こちらをご覧ください Figaro Reference

Figaroは Figaro Github からダウンロードできます

このライブラリの著者は現在、フィガロを使用した確率的プログラミングに関する本を書いています。本ページへのリンクは次のとおりです。 確率的プログラミング本

9
Ravi

スパイア

Spireは、Scalaの数値ライブラリです。これは、汎用的で、高速で、正確であることを目的としています。

特殊化、マクロ、型クラス、暗黙的などの機能を使用して、Spireはパフォーマンスと精度のトレードオフに関する従来の知恵に逆らうために懸命に働きます。主な目標は、開発者が特定の数値表現を「焼き付ける」ことなく効率的な数値コードを作成できるようにすることです。ほとんどの場合、Spireの特殊な型クラスを使用する一般的な実装は、対応する直接実装と同じように機能します。

1
Make42