数据结构,维护所有需要操作的值 Parameters: dataMatIn - 数据矩阵 classLabels - 数据标签 C - 松弛变量 toler - 容错率 kTup - 包含核函数信息的元组,第一个参数存放核函数类别,第二个参数存放必要的核函数需要用到的参数
| 15 | """ |
| 16 | |
| 17 | class optStruct: |
| 18 | """ |
| 19 | 数据结构,维护所有需要操作的值 |
| 20 | Parameters: |
| 21 | dataMatIn - 数据矩阵 |
| 22 | classLabels - 数据标签 |
| 23 | C - 松弛变量 |
| 24 | toler - 容错率 |
| 25 | kTup - 包含核函数信息的元组,第一个参数存放核函数类别,第二个参数存放必要的核函数需要用到的参数 |
| 26 | """ |
| 27 | def __init__(self, dataMatIn, classLabels, C, toler, kTup): |
| 28 | self.X = dataMatIn #数据矩阵 |
| 29 | self.labelMat = classLabels #数据标签 |
| 30 | self.C = C #松弛变量 |
| 31 | self.tol = toler #容错率 |
| 32 | self.m = np.shape(dataMatIn)[0] #数据矩阵行数 |
| 33 | self.alphas = np.mat(np.zeros((self.m,1))) #根据矩阵行数初始化alpha参数为0 |
| 34 | self.b = 0 #初始化b参数为0 |
| 35 | self.eCache = np.mat(np.zeros((self.m,2))) #根据矩阵行数初始化虎误差缓存,第一列为是否有效的标志位,第二列为实际的误差E的值。 |
| 36 | self.K = np.mat(np.zeros((self.m,self.m))) #初始化核K |
| 37 | for i in range(self.m): #计算所有数据的核K |
| 38 | self.K[:,i] = kernelTrans(self.X, self.X[i,:], kTup) |
| 39 | |
| 40 | def kernelTrans(X, A, kTup): |
| 41 | """ |