Github url


by sjwhitworth

sjwhitworth /golearn

Machine Learning for Go

7.3K Stars 1.0K Forks Last release: Not found MIT License 511 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


GoDocBuild Status
Code Coverage

Support via Gittip

GoLearn is a 'batteries included' machine learning library for Go. Simplicity, paired with customisability, is the goal. We are in active development, and would love comments from users out in the wild. Drop us a line on Twitter.

twitter: @golearn_ml


See here for installation instructions.

Getting Started

Data are loaded in as Instances. You can then perform matrix like operations on them, and pass them to estimators. GoLearn implements the scikit-learn interface of Fit/Predict, so you can easily swap out estimators for trial and error. GoLearn also includes helper functions for data, like cross validation, and train and test splitting.

package main import ( "fmt" "" "" "" ) func main() { // Load in a dataset, with headers. Header attributes will be stored. // Think of instances as a Data Frame structure in R or Pandas. // You can also create instances from scratch. rawData, err := base.ParseCSVToInstances("datasets/iris.csv", false) if err != nil { panic(err) } // Print a pleasant summary of your data. fmt.Println(rawData) //Initialises a new KNN classifier cls := knn.NewKnnClassifier("euclidean", "linear", 2) //Do a training-test split trainData, testData := base.InstancesTrainTestSplit(rawData, 0.50) cls.Fit(trainData) //Calculates the Euclidean distance and returns the most popular label predictions, err := cls.Predict(testData) if err != nil { panic(err) } // Prints precision/recall metrics confusionMat, err := evaluation.GetConfusionMatrix(testData, predictions) if err != nil { panic(fmt.Sprintf("Unable to get confusion matrix: %s", err.Error())) } fmt.Println(evaluation.GetSummary(confusionMat)) }
Iris-virginica 28 2 56 0.9333 0.9333 0.9333 Iris-setosa 29 0 59 1.0000 1.0000 1.0000 Iris-versicolor 27 2 57 0.9310 0.9310 0.9310 Overall accuracy: 0.9545


GoLearn comes with practical examples. Dive in and see what is going on.

cd $GOPATH/src/ go run knnclassifier\_iris.go
cd $GOPATH/src/ go run instances.go
cd $GOPATH/src/ go run trees.go


Join the team

Please send me a mail at [email protected]

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.