使用smo算法实现svm
以下代码涉及到的公式推导参照于以下两篇文章,数学推导的部分写的非常好!(如果不了解数学推导过程,代码中的一些部分很可能看不懂)
http://www.thebigdata.cn/JieJueFangAn/12661.html
http://www.wengweitao.com/zhi-chi-xiang-liang-ji-smoxu-lie-zui-xiao-zui-you-hua-suan-fa.html#fnref:calculate
对svm的简要理解可以参见我之前写的http://blog.youkuaiyun.com/xiaonannanxn/article/details/52352207
首先我们建立一个SVM.py
# coding:utf-8
from numpy import *
import matplotlib.pyplot as plt
def loadDataSet(filename):
dataMat = []
labelMat = []
fr = open(filename)
for line in fr.readlines():
lineArr = line.strip().split('\t')
dataMat.append([float(lineArr[0]), float(lineArr[1])])
labelMat.append(float(lineArr[2]))
return dataMat, labelMat
def selectJrand(i, m):
j = i
while j == i:
j = int(random.uniform(0, m))
return j
def clipAlp