Thanks for the references. *You have to realize that using lazy-seqs and clojure collections in general are non-starters since they don't yet support primitives yet and will never be as optimized as existing Fortran (read BLAS/LAPACK) and Java code.*
Good point. I wasn't even thinking abou this kind of stuff yet... thanks. No matter the language, it seems like it always ends up coming back to BLAS/LAPLACK... ahhh Fortran. On Friday, July 20, 2012 11:35:44 AM UTC-6, Ben Mabey wrote: > > On 7/20/12 10:34 AM, Joshua Bowles wrote: > > Check this out for weka: https://github.com/antoniogarrote/clj-ml > > FYI, that fork isn't maintained anymore. I've updated it quite a bit > and fixed a lot of reflection issues that were making it unusable in > production: > > https://github.com/bmabey/clj-ml > > If I had enough time I would probably rewrite the library since there > are a number of things that bug me about the API. Ideally, we could > have the majority of the wrappers generated from java-docs since > manually wrapping every single option is quite tedious. It gets the job > done though and we have been using it in production for two years now. > In addition to using weka libraries we have wrapped encog and have > written some of our own algorithms including an ensemble algorithm > (based mostly on Rich Caruana's work[1]) which composes all these > algorithms. > > As far as general ML in clojure goes... We've liked using clojure for > our ML work but it does suffer from the split language problem. Meaning, > code you write for performant ML algorithms is not the same type of code > you regularly write in Clojure (same as writing numpy is different than > regular python). The trick is to wrap all the interop in nice clojure > abstractions so you don't have to think about it all the time. You have > to realize that using lazy-seqs and clojure collections in general are > non-starters since they don't yet support primitives yet and will never > be as optimized as existing Fortran (read BLAS/LAPACK) and Java code. > Here is a SO answer of mine explaining the same thing in more detail: > http://stackoverflow.com/a/8902524/233964 > > I started releasing some nice (IMO) wrappers for parallel colt that > allow you to get a little closer to the library than Incanter allows you > to. I never got too far but what I did release is useful (I use them at > work) and could be a good starting point for someone else: > https://github.com/bmabey/claw/blob/master/src/claw/core.clj > > (Note, the reason why I needed this was because the abstractions in > Incanter, while beautiful, were too costly for my needs.) > > Lastly, at ClojureWest Bradford Cross mentioned in his keynote[2] that > they were eventually going to release some of their libraries that they > use at Prismatic. Although he didn't say this exactly it sounded liked > they had written some convex-optimization algorithms using pure java > arrays with their wrapper library called Flop. It doesn't look like > they have released anything yet (https://github.com/prismatic). > > -Ben > > > > 1. http://www.cs.cornell.edu/~caruana/ > 2. > http://www.infoq.com/presentations/Why-Prismatic-Goes-Faster-With-Clojure > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en