SyntaxHighlighter

2012-08-31

pythonでsvm

PythonでSVMを使おうとするならどうしたら良いかと思っていたら、OpenCVにちゃんと関数があるじゃあないですかと、、

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

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...