1
0
mirror of https://github.com/sjwhitworth/golearn.git synced 2025-04-28 13:48:56 +08:00

Working on Euclidean distance

This commit is contained in:
Stephen Whitworth 2013-12-26 19:52:36 +00:00
parent eb886ae9bb
commit d3ccfbf12c

33
knn.go
View File

@ -8,18 +8,37 @@ import (
type KNNClassifier struct {
Data mat.DenseMatrix
Name string
Labels []string
}
func (Class *KNNClassifier) New(name string, numbers []float64, x int, y int){
Class.Data = *mat.MakeDenseMatrix(numbers, x, y)
Class.Name = name
//Initialises a new classifier
func (KNN *KNNClassifier) New(name string, labels []string, numbers []float64, x int, y int){
KNN.Data = *mat.MakeDenseMatrix(numbers, x, y)
KNN.Name = name
KNN.Labels = labels
}
func (KNN *KNNClassifier) ComputeDistance(vector mat.DenseMatrix) mat.DenseMatrix {
//Add switches for different distance metrics
result, _ := KNN.Data.TimesDense(&vector)
return *result
}
func (KNN *KNNClassifier) Predict(vector mat.DenseMatrix) mat.DenseMatrix {
blah := KNN.ComputeDistance(vector)
//return *mat.Difference(&KNN.Data, &vector)
return blah
}
func (KNN *KNNClassifier) GetLabel(index int) string {
return KNN.Labels[index]
}
func main(){
knn := KNNClassifier{}
knn.New("Testing", []float64{1,2,3,4,5,6},2,3)
another := KNNClassifier{}
another.New("Blah", []float64{2,4,5,3,4,6},2,3)
fmt.Println(mat.Difference(&knn.Data, &another.Data))
dense := *mat.MakeDenseMatrix([]float64{4,5,1,3,4,2},2,3)
knn.New("Testing", []string{"this sucks", "hiya"}, []float64{1,2,3,4,5,6},2,3)
//hey := knn.ComputeDistance(dense)
blof := knn.Predict(dense)
fmt.Println(blof)
}