对样本的标签进行预测 公式依据“7.3.4 非线性支持向量分类机”中的式7.94 :param x: 要预测的样本x :return: 预测结果
(self, x)
| 354 | |
| 355 | |
| 356 | def predict(self, x): |
| 357 | ''' |
| 358 | 对样本的标签进行预测 |
| 359 | 公式依据“7.3.4 非线性支持向量分类机”中的式7.94 |
| 360 | :param x: 要预测的样本x |
| 361 | :return: 预测结果 |
| 362 | ''' |
| 363 | |
| 364 | result = 0 |
| 365 | for i in self.supportVecIndex: |
| 366 | #遍历所有支持向量,计算求和式 |
| 367 | #如果是非支持向量,求和子式必为0,没有必须进行计算 |
| 368 | #这也是为什么在SVM最后只有支持向量起作用 |
| 369 | #------------------ |
| 370 | #先单独将核函数计算出来 |
| 371 | tmp = self.calcSinglKernel(self.trainDataMat[i, :], np.mat(x)) |
| 372 | #对每一项子式进行求和,最终计算得到求和项的值 |
| 373 | result += self.alpha[i] * self.trainLabelMat[i] * tmp |
| 374 | #求和项计算结束后加上偏置b |
| 375 | result += self.b |
| 376 | #使用sign函数返回预测结果 |
| 377 | return np.sign(result) |
| 378 | |
| 379 | |
| 380 |