import numpy as np
import scipy as sp
import cv2
train_data = np.array(X, dtype=np.float32)
responses = np.array(y, dtype=np.float32)
param = dict( kernel_type = cv2.SVM_RBF,
svm_type = cv2.SVM_C_SVC,
gamma = 1.0/(2.0*0.01),
C = 1)
svm = cv2.SVM(train_data, responses, params = param)
predict_data = np.array([ int(svm.predict(v)) for v in train_data ])
print "Training Accuracy %f" % (np.mean(predict_data == y) * 100.0)
Numpyと一緒に使える。SVM関数に与えるデータもラベルもfloat32型にしないといけないらしい。
参考
- http://stackoverflow.com/questions/8687885/python-opencv-svm-implementation
- http://docs.opencv.org/modules/ml/doc/support_vector_machines.html