MCPcopy Create free account
hub / github.com/datastream/libsvm / k_function

Function k_function

svm.go:230–276  ·  view source on GitHub ↗
(x, y []SVM_Node, param *SVM_Parameter)

Source from the content-addressed store, hash-verified

228}
229
230func k_function(x, y []SVM_Node, param *SVM_Parameter) float64 {
231 switch param.kernel_type {
232 case LINEAR:
233 return dot(x, y)
234 case POLY:
235 return powi(param.gamma*dot(x, y)+param.coef0, param.degree)
236 case RBF:
237 {
238 var sum float64
239 sum = 0
240 xlen := len(x)
241 ylen := len(y)
242 i := 0
243 j := 0
244 for i < xlen && j < ylen {
245 if x[i].index == y[j].index {
246 d := x[i].value - y[j].value
247 i++
248 j++
249 sum += d * d
250 } else if x[i].index > y[j].index {
251 sum += y[j].value * y[j].value
252 j++
253 } else {
254 sum += x[i].value * x[i].value
255 i++
256 }
257 }
258
259 for i < xlen {
260 sum += x[i].value * x[i].value
261 i++
262 }
263
264 for j < ylen {
265 sum += y[j].value * y[j].value
266 j++
267 }
268 return math.Exp(-param.gamma * sum)
269 }
270 case SIGMOID:
271 return math.Tanh(param.gamma*dot(x, y) + param.coef0)
272 case PRECOMPUTED:
273 return x[int(y[0].value)].value
274 }
275 return 0
276}
277
278// An SMO algorithm in Fan et al., JMLR 6(2005), p. 1889--1918
279// Solves:

Callers 1

SVM_predict_valuesMethod · 0.85

Calls 2

dotFunction · 0.85
powiFunction · 0.85

Tested by

no test coverage detected