|
1 | 1 | package clusters |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "errors" |
5 | 4 | "math" |
6 | 5 | "math/rand" |
7 | 6 | "sync" |
@@ -109,52 +108,6 @@ func (c *kmeansClusterer) Learn(data [][]float64) error { |
109 | 108 | return nil |
110 | 109 | } |
111 | 110 |
|
112 | | -func (c *kmeansClusterer) Test(data [][]float64, args ...interface{}) (*TestResult, error) { |
113 | | - if len(data) == 0 { |
114 | | - return nil, ErrEmptySet |
115 | | - } |
116 | | - |
117 | | - clusters, ok := args[0].(int) |
118 | | - if !ok { |
119 | | - return nil, errors.New("Argument #0 is invalid") |
120 | | - } |
121 | | - |
122 | | - var ( |
123 | | - size = len(data) |
124 | | - bounds = bounds(data) |
125 | | - wks = make([]float64, clusters) |
126 | | - wkbs = make([]float64, clusters) |
127 | | - sk = make([]float64, clusters) |
128 | | - one = make([]float64, clusters) |
129 | | - bwkbs = make([]float64, clusters) |
130 | | - ) |
131 | | - |
132 | | - for i := 0; i < clusters; i++ { |
133 | | - c.Learn(data) |
134 | | - |
135 | | - wks[i] = math.Log(wk(c.d, c.m, c.a)) |
136 | | - |
137 | | - for j := 0; j < clusters; j++ { |
138 | | - c.Learn(c.buildRandomizedSet(size, bounds)) |
139 | | - |
140 | | - bwkbs[j] = math.Log(wk(c.d, c.m, c.a)) |
141 | | - one[j] = 1 |
142 | | - } |
143 | | - |
144 | | - wkbs[i] = floats.Sum(bwkbs) / float64(clusters) |
145 | | - |
146 | | - floats.Scale(wkbs[i], one) |
147 | | - floats.Sub(bwkbs, one) |
148 | | - floats.Mul(bwkbs, bwkbs) |
149 | | - |
150 | | - sk[i] = math.Sqrt(floats.Sum(bwkbs) / float64(clusters)) |
151 | | - } |
152 | | - |
153 | | - floats.Scale(math.Sqrt(1+(1/float64(clusters))), sk) |
154 | | - |
155 | | - return nil, nil |
156 | | -} |
157 | | - |
158 | 111 | func (c *kmeansClusterer) Sizes() []int { |
159 | 112 | c.mu.RLock() |
160 | 113 | defer c.mu.RUnlock() |
@@ -371,20 +324,3 @@ func (c *kmeansClusterer) check() { |
371 | 324 |
|
372 | 325 | c.oldchanges = c.changes |
373 | 326 | } |
374 | | - |
375 | | -func (c *kmeansClusterer) buildRandomizedSet(size int, bounds []*[2]float64) [][]float64 { |
376 | | - var ( |
377 | | - l = len(bounds) |
378 | | - r = make([][]float64, size) |
379 | | - ) |
380 | | - |
381 | | - for i := 0; i < size; i++ { |
382 | | - r[i] = make([]float64, l) |
383 | | - |
384 | | - for j := 0; j < l; j++ { |
385 | | - r[i][j] = uniform(bounds[j]) |
386 | | - } |
387 | | - } |
388 | | - |
389 | | - return r |
390 | | -} |
0 commit comments