コード例 #1
0
 def k_function(self, point_a, point_b):
     a = _convert_to_svm_node_array(point_a)
     b = _convert_to_svm_node_array(point_b)
     k_val = svmc.svm_kernel_function(self.model, a, b)
     svmc.svm_node_array_destroy(a)
     svmc.svm_node_array_destroy(b)
     return k_val
コード例 #2
0
 def predict_values_raw(self,x):
     #convert x into svm_node, allocate a double array for return
     n = self.nr_class*(self.nr_class-1)/2
     data = _convert_to_svm_node_array(x)
     dblarr = svmc.new_double(n)
     svmc.svm_predict_values(self.model, data, dblarr)
     ret = _double_array_to_list(dblarr, n)
     svmc.delete_double(dblarr)
     svmc.svm_node_array_destroy(data)
     return ret
コード例 #3
0
 def predict_probability(self,x):
     #c code will do nothing on wrong type, so we have to check ourself
     if self.svm_type == NU_SVR or self.svm_type == EPSILON_SVR:
         raise TypeError, "call get_svr_probability or get_svr_pdf for probability output of regression"
     elif self.svm_type == ONE_CLASS:
         raise TypeError, "probability not supported yet for one-class problem"
     #only C_SVC,NU_SVC goes in
     if not self.probability:
         raise TypeError, "model does not support probabiliy estimates"
     
     #convert x into svm_node, alloc a double array to receive probabilities
     data = _convert_to_svm_node_array(x)
     dblarr = svmc.new_double(self.nr_class)
     pred = svmc.svm_predict_probability(self.model, data, dblarr)
     pv = _double_array_to_list(dblarr, self.nr_class)
     svmc.delete_double(dblarr)
     svmc.svm_node_array_destroy(data)
     p = {}
     for i in range(len(self.labels)):
         p[self.labels[i]] = pv[i]
     return pred, p
コード例 #4
0
 def predict(self,x):
     data = _convert_to_svm_node_array(x)
     ret = svmc.svm_predict(self.model,data)
     svmc.svm_node_array_destroy(data)
     return ret
コード例 #5
0
 def __del__(self):
     svmc.delete_svm_problem(self.prob)
     svmc.delete_double(self.y_array)
     for i in range(self.size):
         svmc.svm_node_array_destroy(self.data[i])
     svmc.svm_node_matrix_destroy(self.x_matrix)