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", 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 := cls.Predict(testData) fmt.Println(predictions) // 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)) }
func main() { //Parses the infamous Iris data. cols, rows, _, labels, data := data.ParseCsv("datasets/iris.csv", 4, []int{0, 1, 2}) //Initialises a new KNN classifier cls := knn.NewKnnClassifier("euclidean") cls.Fit(labels, data, rows, cols) for { //Creates a random array of N float64s between 0 and 7 randArray := util.RandomArray(3, 7) //Calculates the Euclidean distance and returns the most popular label labels := cls.Predict(randArray, 3) fmt.Println(labels) } }
func main() { data, err := base.ParseCSVToInstances("iris_headers.csv", true) if err != nil { panic(err) } cls := knn.NewKnnClassifier("euclidean", 2) trainData, testData := base.InstancesTrainTestSplit(data, 0.8) cls.Fit(trainData) predictions := cls.Predict(testData) fmt.Println(predictions) confusionMat := evaluation.GetConfusionMatrix(testData, predictions) fmt.Println(evaluation.GetSummary(confusionMat)) }
func NewTestTrial(filename string, split float64) bool { cls := knn.NewKnnClassifier("euclidean", 2) data := CSVtoKNNData(filename) train, test := base.InstancesTrainTestSplit(data, split) cls.Fit(train) //Calculates the Euclidean distance and returns the most popular label predictions := cls.Predict(test) fmt.Println(predictions) confusionMat, err := evaluation.GetConfusionMatrix(test, predictions) if err != nil { panic(fmt.Sprintf("Unable to get confusion matrix: %s", err.Error())) } fmt.Println(evaluation.GetSummary(confusionMat)) return true }
func main() { rawData, err := base.ParseCSVToInstances("../datasets/iris_headers.csv", true) if err != nil { panic(err) } //Initialises a new KNN classifier cls := knn.NewKnnClassifier("euclidean", 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 := cls.Predict(testData) fmt.Println(predictions) // Prints precision/recall metrics confusionMat := evaluation.GetConfusionMatrix(testData, predictions) fmt.Println(evaluation.GetSummary(confusionMat)) }
func NewKNNClasifierData(data base.FixedDataGrid) *knn.KNNClassifier { //Initialises a new KNN classifier cls := knn.NewKnnClassifier("euclidean", 2) cls.Fit(data) return cls }