测试函数 Parameters: kTup - 包含核函数信息的元组 Returns: 无
(kTup=('rbf', 10))
| 294 | return trainingMat, hwLabels |
| 295 | |
| 296 | def testDigits(kTup=('rbf', 10)): |
| 297 | """ |
| 298 | 测试函数 |
| 299 | Parameters: |
| 300 | kTup - 包含核函数信息的元组 |
| 301 | Returns: |
| 302 | 无 |
| 303 | """ |
| 304 | dataArr,labelArr = loadImages('trainingDigits') |
| 305 | b,alphas = smoP(dataArr, labelArr, 200, 0.0001, 10, kTup) |
| 306 | datMat = np.mat(dataArr); labelMat = np.mat(labelArr).transpose() |
| 307 | svInd = np.nonzero(alphas.A>0)[0] |
| 308 | sVs=datMat[svInd] |
| 309 | labelSV = labelMat[svInd]; |
| 310 | print("支持向量个数:%d" % np.shape(sVs)[0]) |
| 311 | m,n = np.shape(datMat) |
| 312 | errorCount = 0 |
| 313 | for i in range(m): |
| 314 | kernelEval = kernelTrans(sVs,datMat[i,:],kTup) |
| 315 | predict=kernelEval.T * np.multiply(labelSV,alphas[svInd]) + b |
| 316 | if np.sign(predict) != np.sign(labelArr[i]): errorCount += 1 |
| 317 | print("训练集错误率: %.2f%%" % (float(errorCount)/m)) |
| 318 | dataArr,labelArr = loadImages('testDigits') |
| 319 | errorCount = 0 |
| 320 | datMat = np.mat(dataArr); labelMat = np.mat(labelArr).transpose() |
| 321 | m,n = np.shape(datMat) |
| 322 | for i in range(m): |
| 323 | kernelEval = kernelTrans(sVs,datMat[i,:],kTup) |
| 324 | predict=kernelEval.T * np.multiply(labelSV,alphas[svInd]) + b |
| 325 | if np.sign(predict) != np.sign(labelArr[i]): errorCount += 1 |
| 326 | print("测试集错误率: %.2f%%" % (float(errorCount)/m)) |
| 327 | |
| 328 | if __name__ == '__main__': |
| 329 | testDigits() |
no test coverage detected