(kTup=('rbf', 10))
| 431 | |
| 432 | |
| 433 | def testDigits(kTup=('rbf', 10)): |
| 434 | |
| 435 | # 1. 导入训练数据 |
| 436 | dataArr, labelArr = loadImages('input/6.SVM/trainingDigits') |
| 437 | b, alphas = smoP(dataArr, labelArr, 200, 0.0001, 10000, kTup) |
| 438 | datMat = mat(dataArr) |
| 439 | labelMat = mat(labelArr).transpose() |
| 440 | svInd = nonzero(alphas.A > 0)[0] |
| 441 | sVs = datMat[svInd] |
| 442 | labelSV = labelMat[svInd] |
| 443 | # print("there are %d Support Vectors" % shape(sVs)[0]) |
| 444 | m, n = shape(datMat) |
| 445 | errorCount = 0 |
| 446 | for i in range(m): |
| 447 | kernelEval = kernelTrans(sVs, datMat[i, :], kTup) |
| 448 | # 1*m * m*1 = 1*1 单个预测结果 |
| 449 | predict = kernelEval.T * multiply(labelSV, alphas[svInd]) + b |
| 450 | if sign(predict) != sign(labelArr[i]): errorCount += 1 |
| 451 | print("the training error rate is: %f" % (float(errorCount) / m)) |
| 452 | |
| 453 | # 2. 导入测试数据 |
| 454 | dataArr, labelArr = loadImages('input/6.SVM/testDigits') |
| 455 | errorCount = 0 |
| 456 | datMat = mat(dataArr) |
| 457 | labelMat = mat(labelArr).transpose() |
| 458 | m, n = shape(datMat) |
| 459 | for i in range(m): |
| 460 | kernelEval = kernelTrans(sVs, datMat[i, :], kTup) |
| 461 | predict = kernelEval.T * multiply(labelSV, alphas[svInd]) + b |
| 462 | if sign(predict) != sign(labelArr[i]): errorCount += 1 |
| 463 | print("the test error rate is: %f" % (float(errorCount) / m)) |
| 464 | |
| 465 | |
| 466 | def plotfig_SVM(xArr, yArr, ws, b, alphas): |
no test coverage detected