建立的数据结构来保存所有的重要值
| 13 | |
| 14 | |
| 15 | class optStruct: |
| 16 | """ |
| 17 | 建立的数据结构来保存所有的重要值 |
| 18 | """ |
| 19 | def __init__(self, dataMatIn, classLabels, C, toler, kTup): |
| 20 | """ |
| 21 | Args: |
| 22 | dataMatIn 数据集 |
| 23 | classLabels 类别标签 |
| 24 | C 松弛变量(常量值),允许有些数据点可以处于分隔面的错误一侧。 |
| 25 | 控制最大化间隔和保证大部分的函数间隔小于1.0这两个目标的权重。 |
| 26 | 可以通过调节该参数达到不同的结果。 |
| 27 | toler 容错率 |
| 28 | kTup 包含核函数信息的元组 |
| 29 | """ |
| 30 | |
| 31 | self.X = dataMatIn |
| 32 | self.labelMat = classLabels |
| 33 | self.C = C |
| 34 | self.tol = toler |
| 35 | |
| 36 | # 数据的行数 |
| 37 | self.m = shape(dataMatIn)[0] |
| 38 | self.alphas = mat(zeros((self.m, 1))) |
| 39 | self.b = 0 |
| 40 | |
| 41 | # 误差缓存,第一列给出的是eCache是否有效的标志位,第二列给出的是实际的E值。 |
| 42 | self.eCache = mat(zeros((self.m, 2))) |
| 43 | |
| 44 | # m行m列的矩阵 |
| 45 | self.K = mat(zeros((self.m, self.m))) |
| 46 | for i in range(self.m): |
| 47 | self.K[:, i] = kernelTrans(self.X, self.X[i, :], kTup) |
| 48 | |
| 49 | |
| 50 | def kernelTrans(X, A, kTup): # calc the kernel or transform data to a higher dimensional space |