Python使用LibSVM

一开始打算用OpenCV的SVM,不过好像有些bug,训练有问题,保存model之后load()也有问题,于是用LibSVM了。

LibSVM提供了Python的接口,去官网下载他们的包,解压后有Python文件夹,把这个Python文件夹路径加入到环境变量(可能要新建)PYTHONPATH中。 代码里常用的就下面这几行,简单粗暴哈。

1
2
3
4
5
6
7
8
9
import svmutil as svm
# 训练
model = svm.svm_train(trainY, trainX, '-c 4')
# 保存模型
svm.svm_save_model('../filepath/model.dat', model)
# 读取模型
model = svm.svm_load_model('../filepath/model.dat')
# 预测
p_label, p_acc, p_val = svm.svm_predict(testY, testX, model)

训练数据格式也很直接,trainX是二维数组,trainX[i][j] 表示第 i 组训练数据的第 j 个属性值。

trainY是一维数组,trainY[i]就是第 i 组数据的标签。

test数据同上。testY不影响预测结果,不过如果testY是对应的测试集标签,那么可以得到正确的预测精度值。