Có thư viện thống kê / toán học tốt cho Scala không? [đóng cửa]


88

Tôi đang tìm một thư viện mã nguồn mở tốt cho scala cho toán học và thống kê. Hy vọng rằng một cái gì đó giống như Apache Math hoặc Colt, nhưng được triển khai trong Scala.

ai đó có thể chỉ cho tôi phương hướng đúng không?


4
Nó có thể hữu ích để giải thích lý do tại sao bạn theo đuổi một thư viện được triển khai trong Scala, thay vì một thư viện chỉ có thể sử dụng được từ Scala.
retronym

Trên thực tế, tôi đã bắt đầu sử dụng commons.apache.org/proper/commons-math và nó rất dễ sử dụng và hoạt động tốt trong Scala.
tom10271

Câu trả lời:


147

Có, có một số:

Scalalab

Dự án ScalaLab nhằm cung cấp một môi trường lập trình khoa học hiệu quả cho Máy ảo Java. Ngôn ngữ kịch bản dựa trên ngôn ngữ lập trình Scala được tăng cường với các toán tử khoa học cấp cao và với một môi trường tích hợp cung cấp phong cách làm việc giống như Matlab.

Mã script cực kỳ nhanh, gần giống với Java (đôi khi chậm hơn, đôi khi nhanh hơn) và thường nhanh hơn từ các đoạn mã Matlab .m tương đương!

Scalala hiện được thay thế bởi Breeze

Một thư viện đại số tuyến tính dạng số hiệu suất cao cho Scala, với các toán tử giống Matlab phong phú trên vectơ và ma trận; một thư viện các thói quen số; hỗ trợ cho việc lập mưu.

Factorie

FACTORIE là một bộ công cụ để triển khai mô hình xác suất, được thực hiện như một thư viện phần mềm trong Scala. Nó cung cấp cho người dùng một ngôn ngữ ngắn gọn để tạo đồ thị nhân tố quan hệ , ước tính các tham số và thực hiện suy luận.

Cassovary

bởi twitter để xử lý đồ thị:

Cassovary được thiết kế từ đầu để xử lý hiệu quả các biểu đồ có hàng tỷ cạnh. Nó đi kèm với một số cấu trúc dữ liệu nút và đồ thị phổ biến và các thuật toán truyền tải. Cách sử dụng điển hình là khai thác và phân tích đồ thị quy mô lớn.

Tại Twitter, Cassovary tạo thành lớp dưới cùng của một ngăn xếp mà chúng tôi sử dụng để cung cấp năng lượng cho nhiều tính năng dựa trên biểu đồ của mình, bao gồm “Người cần theo dõi” và “Tương tự”. Chúng tôi cũng sử dụng nó để xác định mức độ liên quan trong Tìm kiếm trên Twitter và các thuật toán xác định người dùng Sản phẩm được Quảng cáo nào sẽ thấy. Theo thời gian, chúng tôi hy vọng sẽ đưa thêm logic không độc quyền từ một số tính năng sản phẩm đó vào Cassovary.

Algebird

Thư viện đại số trừu tượng từ twitter:

Mã được nhắm mục tiêu vào việc xây dựng hệ thống tổng hợp (thông qua Scalding hoặc Storm). Ban đầu nó được phát triển như một phần của API ma trận của Scalding, nơi Ma trận có các giá trị là các phần tử của Monoids, Groups hoặc Rings. Sau đó, rõ ràng là mã có ứng dụng rộng rãi hơn trong Scalding và trên các dự án khác trong Twitter.

scala_prob

! có trạng thái thử nghiệm!

sb_probdsl cung cấp hỗ trợ lập trình xác suất rời rạc đơn giản bằng cách sử dụng hỗ trợ liên tục được phân tách mới của scala.

Malakov

Thư viện Markov Chain cho Scala

Chuỗi Markov đại diện cho các quá trình ngẫu nhiên trong đó phân phối xác suất của bước tiếp theo phụ thuộc không nhỏ vào bước hiện tại, nhưng không phụ thuộc vào các bước trước đó. Cung cấp cho thư viện này một số dữ liệu đào tạo và nó sẽ tạo ra dữ liệu ngẫu nhiên mới giống với nó về mặt thống kê.

thu thập tín hiệu

Signal / Collect là một mô hình lập trình và khuôn khổ để xử lý đồ thị quy mô lớn. Mô hình đủ biểu cảm để hình thành chính xác nhiều thuật toán dòng dữ liệu và lặp lại trên đồ thị, đồng thời cho phép khung công tác song song hóa quá trình xử lý một cách rõ ràng.

Grizzled.math

Bao gồm các gói stat và tiện ích. Chứa những thứ rất cơ bản và nổi tiếng, chẳng hạn như phương tiện ...

Đơn nguyên xác suất:

Mặc dù nó không phải là thư viện nhưng nó có thể giúp bạn rất nhiều trong việc xử lý các xác suất.


4
Bạn có thể nhìn vào so sánh hiệu suất của Scalala và Scalalab vs Python đây
om-nôm-nom

15
Ngoài ra còn có Saddle : Saddle là một thư viện thao tác dữ liệu dành cho Scala cung cấp các cấu trúc dữ liệu một và hai chiều được hỗ trợ bởi mảng, được lập chỉ mục, được chuyên biệt hóa một cách hợp lý trên các nguyên thủy JVM để tránh các chi phí của quyền anh và unboxing.
om-nom-nom

3
om-nom-nom, bạn nên nâng Saddle lên một câu trả lời. +1
metasim

1
@SimeonFitch Tôi đang đợi một chút thời gian rảnh, để xem xét kỹ hơn về yên ngựa và có lẽ sẽ viết một cái gì đó nhiều hơn đoạn trích ở trên.
om-nom-nom

1
@ om-nom-nom: Liên kết của bạn không hoạt động nữa.
Pravesh Jain

9

Figaro là một thư viện Scala dành cho Lập trình xác suất. Bạn có thể tìm thêm thông tin về Figaro tại đây Tham khảo Figaro

Figaro có sẵn để tải xuống từ Figaro Github

Tác giả của thư viện này hiện đang viết một cuốn sách về Lập trình xác suất sử dụng Figaro. Đây là đường dẫn đến trang sách: Sách Lập trình xác suất


1

Spire

Spire là một thư viện số cho Scala nhằm mục đích chung chung, nhanh chóng và chính xác.

Sử dụng các tính năng như chuyên môn hóa, macro, lớp kiểu và hàm ý, Spire làm việc chăm chỉ để thách thức sự khôn ngoan thông thường về hiệu suất và đánh đổi độ chính xác. Mục tiêu chính là cho phép các nhà phát triển viết mã số hiệu quả mà không cần phải "nướng" các biểu diễn số cụ thể. Trong hầu hết các trường hợp, các triển khai chung sử dụng các lớp kiểu chuyên biệt của Spire thực hiện giống hệt với các triển khai trực tiếp tương ứng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.