1
0
mirror of https://github.com/sjwhitworth/golearn.git synced 2025-05-01 22:18:10 +08:00
golearn/examples/knnclassifier_iris.go

33 lines
855 B
Go
Raw Normal View History

2014-01-04 19:31:33 +00:00
package main
import (
2014-04-30 08:57:13 +01:00
"fmt"
base "github.com/sjwhitworth/golearn/base"
evaluation "github.com/sjwhitworth/golearn/evaluation"
2014-05-01 21:20:44 +01:00
knn "github.com/sjwhitworth/golearn/knn"
2014-04-30 08:57:13 +01:00
)
2014-01-04 19:31:33 +00:00
2014-04-30 08:57:13 +01:00
func main() {
rawData, err := base.ParseCSVToInstances("datasets/iris_headers.csv", true)
if err != nil {
panic(err)
}
rawData.Shuffle()
2014-01-04 19:31:33 +00:00
//Initialises a new KNN classifier
cls := knn.NewKnnClassifier("euclidean", 2)
2014-04-30 08:57:13 +01:00
//Do a training-test split
trainTest := base.InstancesTrainTestSplit(rawData, 0.50)
trainData := trainTest[0]
testData := trainTest[1]
cls.Fit(trainData)
2014-01-04 19:31:33 +00:00
//Calculates the Euclidean distance and returns the most popular label
predictions := cls.Predict(testData)
fmt.Println(predictions)
// Prints precision/recall metrics
confusionMat := evaluation.GetConfusionMatrix(testData, predictions)
fmt.Println(evaluation.GetSummary(confusionMat))
2014-04-30 08:57:13 +01:00
}