Коэффициент Silhoutte для k означает кластеризацию с использованием Голанга

Я пытаюсь вычислить коэффициент silhoutte для кластера, и мой код показывает ошибку...

package gomeans
import("fmt"
   "math"
   )

type KScore struct {
K     int
Score float64
}
func Score(dataset []Point, k int) (float64, error) {
cc := Run(dataset, 3)
//fmt.Printf(cc)
//if err != nil {
//  return -1.0, err
//}

var si float64
var sc int64
for ci, c := range cc {
    for _, p := range Cluster {

        ai := AverageDistance(p, Cluster)
        //fmt.Println(ai)
        _, bi := Neighbour(p, ci)


        si += (bi - ai) / math.Max(ai, bi)
        sc++
    }
}
fmt.Println(si)
return si / float64(sc), nil
}
func AverageDistance(o Point, observations []Point) float64 {
var d float64
var l int

for _, oo := range observations {
    dist := o.Distance(oo)
    if dist == 0 {
        continue
    }

    l++
    d += dist
}

if l == 0 {
    return 0
}
return d / float64(l)
}
func (cl Cluster) Neighbour(point Point, fromCluster int) (int, float64) {
var d float64
nc := -1

for i, cluster := range cl {
    if i == fromCluster {
        continue
    }

    cd := AverageDistance(point, cluster)
    if nc < 0 || cd < d {
        nc = i
        d = cd
    }
}

return nc, d
}

 type Point struct {
 X float64
 //Y float64
 }
 type Cluster struct {
 Center Point
 Points []Point
 }

кластер и точка две структуры, как определено выше.

и это показывает ошибку. ошибки: 24:15: тип Cluster не является выражением 29:13: undefined: сосед 66:20: не может варьироваться по cl (тип Cluster), кто-нибудь может помочь?

0 ответов

Другие вопросы по тегам