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

Method SVM_predict_values

svm.go:2258–2340  ·  view source on GitHub ↗
(model *SVM_Model, x []SVM_Node, dec_values []float64)

Source from the content-addressed store, hash-verified

2256}
2257
2258func (this *SVM) SVM_predict_values(model *SVM_Model, x []SVM_Node, dec_values []float64) float64 {
2259 var i int
2260 var rst float64
2261 if model.param.svm_type == ONE_CLASS ||
2262 model.param.svm_type == EPSILON_SVR ||
2263 model.param.svm_type == NU_SVR {
2264 sv_coef := model.sv_coef[0]
2265 sum := float64(0)
2266 for i = 0; i < model.l; i++ {
2267 sum += sv_coef[i] * k_function(x, model.SV[i], model.param)
2268 }
2269 sum -= model.rho[0]
2270 dec_values[0] = sum
2271
2272 if model.param.svm_type == ONE_CLASS {
2273 if sum > 0 {
2274 rst = 1
2275 } else {
2276 rst = -1
2277 }
2278 } else {
2279 rst = sum
2280 }
2281 } else {
2282 nr_class := model.nr_class
2283 l := model.l
2284
2285 kvalue := make([]float64, l)
2286 for i = 0; i < l; i++ {
2287 kvalue[i] = k_function(x, model.SV[i], model.param)
2288 }
2289
2290 start := make([]int, nr_class)
2291 start[0] = 0
2292 for i = 1; i < nr_class; i++ {
2293 start[i] = start[i-1] + model.nSV[i-1]
2294 }
2295
2296 vote := make([]int, nr_class)
2297 for i = 0; i < nr_class; i++ {
2298 vote[i] = 0
2299 }
2300
2301 p := 0
2302 for i = 0; i < nr_class; i++ {
2303 for j := i + 1; j < nr_class; j++ {
2304 sum := float64(0)
2305 si := start[i]
2306 sj := start[j]
2307 ci := model.nSV[i]
2308 cj := model.nSV[j]
2309
2310 var k int
2311 coef1 := model.sv_coef[j-1]
2312 coef2 := model.sv_coef[i]
2313 for k = 0; k < ci; k++ {
2314 sum += coef1[si+k] * kvalue[si+k]
2315 }

Callers 3

SVM_predictMethod · 0.95

Calls 1

k_functionFunction · 0.85

Tested by

no test coverage detected