diff --git a/README.md b/README.md index 5982e81..7edcbff 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ GoLearn
[![GoDoc](https://godoc.org/github.com/sjwhitworth/golearn?status.png)](https://godoc.org/github.com/sjwhitworth/golearn)
-GoLearn is a 'batteries included' machine learning library for Go. Simplicity, paired with customisability, is the goal. +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](http://www.twitter.com/golearn_ml) @@ -17,15 +18,56 @@ cd src/github.com/sjwhitworth/golearn go get ./... ``` -Examples +Getting Started ======= +``` +// 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. +data, err := base.ParseCSVToInstances("datasets/iris_headers.csv", true) + +// Print a pleasant summary of your data. +fmt.Println(data) + +// Split your dataframe into a training set, and a test set, with an 80/20 proportion. +trainTest := base.InstancesTrainTestSplit(rawData, 0.8) +trainData := trainTest[0] +testData := trainTest[1] + +// Instantiate a new KNN classifier. Euclidean distance, with 2 neighbours. +cls := knn.NewKnnClassifier("euclidean", 2) + +// Fit it on your training data. +cls.Fit(trainData) + +// Get your predictions against test instances. +predictions := cls.Predict(testData) + +// Print a confusion matrix with precision and recall metrics. +confusionMat := evaluation.GetConfusionMatrix(testData, predictions) +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 +``` + +Examples +======== + +GoLearn comes with practical examples. Dive in and see what is going on. + ``` cd examples/ go run knnclassifier_iris.go +go run instances.go ``` Join the team ============= -If you'd like to contribute, please send me a mail at stephen dot whitworth at hailocab dot com. I will also add you to the team [Slack](https://slack.com) account, which we also use to communicate. +Please send me a mail at stephen dot whitworth at hailocab dot com.