本系列以书中源码为主,稍作修改并添加注释,均实际运行可行。为免后来者踩坑,特此公开!欢迎打赏!
转载请注明出处!
from numpy import *
#SMO算法中的辅助函数
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
#功能:在(0,m)的区间范围内随机选择一个除i以外的整数
#输入:不能选择的整数i,区间上界m
#输出:随机选择的整数
def selectJrand(i,m):
j=i
while(j==i):
j = int(random.uniform(0,m))
return j
#功能:保证aj在[L,H]里面
#输入:要调整的数aj,区间上界H,区间下届L
#输出:调整好的数aj
def clipAlpha(aj,H,L):
if aj > H:
aj = H
if L > aj:
aj = L
return aj
#功能:简化版SMO算法
#输入:数据矩阵dataMatIn,标签向量classLabels,常数C,容错率toler,最大迭代次数maxIter
#输出:超平面位移项b,拉格朗日乘子alpha
def</