From 985ccc9d1960d10dae22553d3b1b6a6e1e8c85d5 Mon Sep 17 00:00:00 2001 From: Bert Chang Date: Sat, 3 May 2014 01:03:29 +0800 Subject: [PATCH] We don't need to manually handle error anymore. --- metrics/pairwise/euclidean.go | 5 +++-- metrics/pairwise/euclidean_test.go | 6 +----- metrics/pairwise/rbf_kernel.go | 10 +++------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/metrics/pairwise/euclidean.go b/metrics/pairwise/euclidean.go index f776381..30f8df3 100644 --- a/metrics/pairwise/euclidean.go +++ b/metrics/pairwise/euclidean.go @@ -20,9 +20,10 @@ func (self *Euclidean) InnerProduct(vectorX *mat64.Dense, vectorY *mat64.Dense) // We may need to create Metrics / Vector interface for this func (self *Euclidean) Distance(vectorX *mat64.Dense, vectorY *mat64.Dense) float64 { - vectorX.Sub(vectorX, vectorY) + subVector := mat64.NewDense(0, 0, nil) + subVector.Sub(vectorX, vectorY) - result := self.InnerProduct(vectorX, vectorX) + result := self.InnerProduct(subVector, subVector) return math.Sqrt(result) } diff --git a/metrics/pairwise/euclidean_test.go b/metrics/pairwise/euclidean_test.go index 29b8b87..fde2777 100644 --- a/metrics/pairwise/euclidean_test.go +++ b/metrics/pairwise/euclidean_test.go @@ -23,11 +23,7 @@ func TestEuclidean(t *testing.T) { }) Convey("When calculating distance", func() { - result, err := euclidean.Distance(vectorX, vectorY) - - Convey("The err should be nil", func() { - So(err, ShouldBeNil) - }) + result := euclidean.Distance(vectorX, vectorY) Convey("The result should be 3", func() { So(result, ShouldEqual, 3) diff --git a/metrics/pairwise/rbf_kernel.go b/metrics/pairwise/rbf_kernel.go index 5d78cca..29c9c17 100644 --- a/metrics/pairwise/rbf_kernel.go +++ b/metrics/pairwise/rbf_kernel.go @@ -14,15 +14,11 @@ func NewRBFKernel(gamma float64) *RBFKernel { return &RBFKernel{gamma: gamma} } -func (self *RBFKernel) InnerProduct(vectorX *mat64.Dense, vectorY *mat64.Dense) (float64, error) { +func (self *RBFKernel) InnerProduct(vectorX *mat64.Dense, vectorY *mat64.Dense) float64 { euclidean := NewEuclidean() - distance, err := euclidean.Distance(vectorX, vectorY) - - if err != nil { - return 0, err - } + distance := euclidean.Distance(vectorX, vectorY) result := math.Exp(self.gamma * math.Pow(distance, 2)) - return result, nil + return result }