hi Sina,
On Mon, Jan 29, 2018 at 10:25 PM, Sina Siadat <[email protected]> wrote:
> Hi all!
>
> I just wrote a simple gradient regressor in Go. Gradient boosting is a
> statistical learning method. Given a number of samples it returns a
> function that fits the those data and can be used to predict previously
> unseen data. The usage is simple, here's an example:
>
> trainSamples := []sample.Sample{
> sample.DefaultSample{Xs: map[string]float64{"x": 0}, Y: 10},
> sample.DefaultSample{Xs: map[string]float64{"x": 1}, Y: 10},
> sample.DefaultSample{Xs: map[string]float64{"x": 2}, Y: 20},
> sample.DefaultSample{Xs: map[string]float64{"x": 3}, Y: 20},
> sample.DefaultSample{Xs: map[string]float64{"x": 4}, Y: 5},
> sample.DefaultSample{Xs: map[string]float64{"x": 5}, Y: 5},
> }
> predictFunc := gradboostreg.Learn(trainSamples, 0.5, 10)
>
> testSamples := []sample.Sample{
> sample.DefaultSample{Xs: map[string]float64{"x": 0.0}, Y: 10},
> sample.DefaultSample{Xs: map[string]float64{"x": 0.5}, Y: 10},
> sample.DefaultSample{Xs: map[string]float64{"x": 2.5}, Y: 20},
> sample.DefaultSample{Xs: map[string]float64{"x": 2.0}, Y: 20},
> sample.DefaultSample{Xs: map[string]float64{"x": 4.5}, Y: 5},
> }
>
> for i := range testSamples {
> predicted, actual := predictFunc(testSamples[i]),
> testSamples[i].GetY()
> fmt.Printf("predicted=%.1f actual=%.1f\n", predicted, actual)
> }
>
> // Output:
> // predicted=10.0 actual=10.0
> // predicted=10.0 actual=10.0
> // predicted=20.0 actual=20.0
> // predicted=20.0 actual=20.0
> // predicted=5.0 actual=5.0
>
> Here's the source: https://github.com/siadat/gradboostreg
>
> Let me know what you think! :)
>
nice!
I have one "drive-by-comment" and a question:
you could have perhaps used gonum for the stats stuff :)
and the question: did you compare your package with XGBoost (which is now
kind of a standard candle nowadays) in terms of accuracy, speed and memory
usage?
cheers,
-s
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.