(prob *SVM_Problem, param *SVM_Parameter, Cp, Cn float64, probAB []float64)
| 1705 | } |
| 1706 | |
| 1707 | func (this *SVM) SVM_binary_svc_probability(prob *SVM_Problem, param *SVM_Parameter, Cp, Cn float64, probAB []float64) { |
| 1708 | var i int |
| 1709 | nr_fold := 5 |
| 1710 | perm := make([]int, prob.l) |
| 1711 | dec_values := make([]float64, prob.l) |
| 1712 | |
| 1713 | // random shuffle |
| 1714 | for i = 0; i < prob.l; i++ { |
| 1715 | perm[i] = i |
| 1716 | } |
| 1717 | for i = 0; i < prob.l; i++ { |
| 1718 | j := i + int(rand.Int31n(int32(prob.l-i))) |
| 1719 | //do {int _=perm[i]; perm[i]=perm[j]; perm[j]=_;} while(false); |
| 1720 | perm[i], perm[j] = perm[j], perm[i] |
| 1721 | } |
| 1722 | for i = 0; i < nr_fold; i++ { |
| 1723 | begin := i * prob.l / nr_fold |
| 1724 | end := (i + 1) * prob.l / nr_fold |
| 1725 | var j, k int |
| 1726 | subprob := new(SVM_Problem) |
| 1727 | |
| 1728 | subprob.l = prob.l - (end - begin) |
| 1729 | subprob.x = make([][]SVM_Node, subprob.l) |
| 1730 | subprob.y = make([]float64, subprob.l) |
| 1731 | |
| 1732 | k = 0 |
| 1733 | for j = 0; j < begin; j++ { |
| 1734 | subprob.x[k] = prob.x[perm[j]] |
| 1735 | subprob.y[k] = prob.y[perm[j]] |
| 1736 | k++ |
| 1737 | } |
| 1738 | for j = end; j < prob.l; j++ { |
| 1739 | subprob.x[k] = prob.x[perm[j]] |
| 1740 | subprob.y[k] = prob.y[perm[j]] |
| 1741 | k++ |
| 1742 | } |
| 1743 | p_count := 0 |
| 1744 | n_count := 0 |
| 1745 | for j = 0; j < k; j++ { |
| 1746 | if subprob.y[j] > 0 { |
| 1747 | p_count++ |
| 1748 | } else { |
| 1749 | n_count++ |
| 1750 | } |
| 1751 | } |
| 1752 | if p_count == 0 && n_count == 0 { |
| 1753 | for j = begin; j < end; j++ { |
| 1754 | dec_values[perm[j]] = 0 |
| 1755 | } |
| 1756 | } else if p_count > 0 && n_count == 0 { |
| 1757 | for j = begin; j < end; j++ { |
| 1758 | dec_values[perm[j]] = 1 |
| 1759 | } |
| 1760 | } else if p_count == 0 && n_count > 0 { |
| 1761 | for j = begin; j < end; j++ { |
| 1762 | dec_values[perm[j]] = -1 |
| 1763 | } |
| 1764 | } else { |
no test coverage detected