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:
parent
eb886ae9bb
commit
d3ccfbf12c
33
knn.go
33
knn.go
@ -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)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user