2012-02-02 16 views
9

Tôi đang tìm thư viện để tạo lưới Bayes và thực hiện việc học và suy luận về chúng trong Scala (hoặc Java, trong trường hợp thiếu giải pháp tốt hơn). Thư viện cần được chủ động duy trì, thực hiện, tốt nhất là dễ dàng, chắc chắn là tài liệu tốt trừ khi việc sử dụng thực sự đơn giản. Các giải pháp thay thế miễn phí, mã nguồn mở và thương mại là ok, nhưng đối với các giải pháp thương mại, bản dùng thử miễn phí là bắt buộc.Mạng Bayesian ở Scala

Một giải pháp lý tưởng sẽ tương đương với những gì trong thế giới .NET là Infer.NET của Microsoft Research, nhưng có nhiều tài liệu hơn.

Cảm ơn trước!

+1

này có thể hữu ích http://stackoverflow.com/questions/5363855/implement-bayes-net/5364920 # 5364920 –

+0

và đây là liên kết trực tiếp tới [weka] (http://weka.wikispaces.com/Use+WEKA+in+your+Java+code) (cũng được đề cập trong câu trả lời Łukasz đã giới thiệu bạn) – wmz

+0

@ ŁukaszBachman: Cảm ơn , nhưng tôi đã xem xét JavaBayes và tìm thấy nó cũ và không thực hiện, mặc dù khá tài liệu ... – em70

Trả lời

9

FACTORIE là một dự án nhỏ, nhưng nó phù hợp với các hóa đơn và được thực hiện trong Scala:

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

Nó được phát triển bởi Andrew McCallum và phòng thí nghiệm của ông tại UMass, người cũng chịu trách nhiệm cực kỳ hữu ích MALLET machine learning toolkit.

+3

FACTORIE có thể là tuyệt vời, nhưng nó không đơn giản - ít nhất là với tôi - và tài liệu hướng dẫn rất thấp ... 1 anyway – em70

+0

FACTORIE có hỗ trợ mạng Bayesian không? –

+0

Tôi đã dành 24 giờ cuối cùng trên FACTORIE và tôi gần như đã sẵn sàng để chạy một thuật toán ngây thơ (tôi nghĩ). Tôi thực sự thích tổ chức _but_ tài liệu là _SEVERELY_ thiếu, như @ em70 đã đề cập –

1

Có lẽ Banjo phù hợp với hóa đơn? Tôi không chắc nó được phát triển tích cực như thế nào, nhưng tôi biết nó đã tồn tại trong ít nhất vài năm ... (không bao giờ sử dụng nó).

Banjo: Bayesian Network Inference with Java Objects

1

Một số lựa chọn thay thế Java để Infer.NET được trình bày như là câu trả lời cho this question. Vì vậy, tôi nghĩ về cơ bản bạn đang hỏi về một trong hai theo dõi câu hỏi đó (nó đã được yêu cầu trong nửa cuối năm 2010) đối với Java hoặc giải pháp dựa trên Scala hoàn toàn.

4

Bạn có thể muốn xem xét SMILE. Nó hoàn toàn miễn phí và có API Java. Các tùy chọn miễn phí khác trong Java là UnBBayes và SamIam.

  • SMILE

    SMILE (cấu Modeling, suy luận, và học Engine) là một đầy đủ thư viện di động của C++ lớp thực hiện phương pháp ra quyết định lý thuyết đồ họa, chẳng hạn như net-công trình Bayesian và ảnh hưởng sơ đồ, trực tiếp tuân theo các hệ thống thông minh.

  • UnBBayes

    UnBBayes là một khuôn khổ mạng xác suất được viết bằng Java. Nó có cả GUI và API với suy luận, lấy mẫu, học tập và đánh giá . Nó hỗ trợ BN, ID, MSBN, OOBN, HBN, MEBN/PR-OWL, PRM, cấu trúc, tham số và học tập gia tăng.

  • SamIam

    Samiam bao gồm hai thành phần chính: một giao diện người dùng đồ họa và một động cơ lập luận. Giao diện đồ họa cho phép người dùng phát triển các mô hình mạng Bayesian và lưu chúng ở nhiều định dạng khác nhau. Công cụ lý luận hỗ trợ nhiều tác vụ bao gồm: suy luận cổ điển; tham số ước tính; sự cân bằng không gian thời gian; phân tích độ nhạy; và tạo giải thích dựa trên MAP và MPE.

tinh khiết Scala và miễn phí tùy chọn là factorie (đã đề cập) và Figaro. Nhưng Figaro hiện thiếu một phần học tập.

  • Figaro - Probabilistic Modeling

    mô hình Figaro là các cấu trúc dữ liệu trong ngôn ngữ lập trình Scala, đó là tương thích với Java, và có thể được xây dựng, chế tác, và sử dụng trực tiếp trong bất kỳ chương trình Scala hoặc Java.