1
0
mirror of https://github.com/sjwhitworth/golearn.git synced 2025-04-26 13:49:14 +08:00

We don't need to manually handle error anymore.

This commit is contained in:
Bert Chang 2014-05-03 01:03:29 +08:00
parent 804cd82cfc
commit 985ccc9d19
3 changed files with 7 additions and 14 deletions

View File

@ -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)
}

View File

@ -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)

View File

@ -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
}