Show HN: GoLearn
github.com
github.com
Do you have benchmarks?
I've been working on a similar project just for decision tree learning [1]. I've been able to get performance just about equal to scikit learn which is the current fastest open implementation [2]. I can beat it in some cases with lots of binary features.
I'll see about including a compatibility layer for integration with golearn. I'm actually also currently squatting the golearn github org but will pass it off if you are interested.
[1] https://github.com/ryanbressler/CloudForest
[2] based on benchmarks here http://orbi.ulg.ac.be/handle/2268/170309
For decision trees, the only thing that's available at the moment is a half-baked ID3 algorithm, but I've been looking at CloudForest and it's a very impressive piece of work.
Performance isn't very good yet: this is due to some data representation decisions, but it now supports grouping attributes which will allow us to optimise to acceptable performance levels (I have a prototype KNN version which achieved similar performance levels to this guy's Rust[1] implementation).
Stephen (one of the authors)
As an aside, I keep hoping Google (or others) open sources a bunch of their internal Go libraries; I'm just gussing here, but surely they've built a bunch of tools outside the standard library to match scientific, numeric and utility libraries found in other languages (scipy, numpy, PIL, etc)? Based on its rumored wide adoption and extensive use inside the company, it sure makes sense they've extended the core to suit their irregular needs.
Can anyone who's worked/works with Go at Google shed some light on this? Just curious.
IE The GC thread I linked in another comment [1] makes it pretty clear that they may actually break the ability to easily call existing scientific libraries (ie by handing a pointer to a go []float64 to cgo) in favor of better real-time guarantees.
[1] https://groups.google.com/forum/#!topic/golang-dev/pIuOcqAlv...
I've looked into writing my own machine learning code in Go, and the major difficulty that I've always run into was the lack of a good matrix package. The author of GoLearn apparently uses library that wraps a Go implementation BLAS. I'm curious to see what kind of performance this offers versus more established linear algebra packs from other languages.
However changes to the gc and cgo may break this in the future. See comments from gonum author Brendan Tracy here: https://groups.google.com/forum/#!topic/golang-dev/pIuOcqAlv...