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

Reply via email to