测试函数 Parameters: k1 - 使用高斯核函数的时候表示到达率 Returns: 无
(k1 = 1.3)
| 255 | |
| 256 | |
| 257 | def testRbf(k1 = 1.3): |
| 258 | """ |
| 259 | 测试函数 |
| 260 | Parameters: |
| 261 | k1 - 使用高斯核函数的时候表示到达率 |
| 262 | Returns: |
| 263 | 无 |
| 264 | """ |
| 265 | dataArr,labelArr = loadDataSet('testSetRBF.txt') #加载训练集 |
| 266 | b,alphas = smoP(dataArr, labelArr, 200, 0.0001, 100, ('rbf', k1)) #根据训练集计算b和alphas |
| 267 | datMat = np.mat(dataArr); labelMat = np.mat(labelArr).transpose() |
| 268 | svInd = np.nonzero(alphas.A > 0)[0] #获得支持向量 |
| 269 | sVs = datMat[svInd] |
| 270 | labelSV = labelMat[svInd]; |
| 271 | print("支持向量个数:%d" % np.shape(sVs)[0]) |
| 272 | m,n = np.shape(datMat) |
| 273 | errorCount = 0 |
| 274 | for i in range(m): |
| 275 | kernelEval = kernelTrans(sVs,datMat[i,:],('rbf', k1)) #计算各个点的核 |
| 276 | predict = kernelEval.T * np.multiply(labelSV,alphas[svInd]) + b #根据支持向量的点,计算超平面,返回预测结果 |
| 277 | if np.sign(predict) != np.sign(labelArr[i]): errorCount += 1 #返回数组中各元素的正负符号,用1和-1表示,并统计错误个数 |
| 278 | print("训练集错误率: %.2f%%" % ((float(errorCount)/m)*100)) #打印错误率 |
| 279 | dataArr,labelArr = loadDataSet('testSetRBF2.txt') #加载测试集 |
| 280 | errorCount = 0 |
| 281 | datMat = np.mat(dataArr); labelMat = np.mat(labelArr).transpose() |
| 282 | m,n = np.shape(datMat) |
| 283 | for i in range(m): |
| 284 | kernelEval = kernelTrans(sVs,datMat[i,:],('rbf', k1)) #计算各个点的核 |
| 285 | predict=kernelEval.T * np.multiply(labelSV,alphas[svInd]) + b #根据支持向量的点,计算超平面,返回预测结果 |
| 286 | if np.sign(predict) != np.sign(labelArr[i]): errorCount += 1 #返回数组中各元素的正负符号,用1和-1表示,并统计错误个数 |
| 287 | print("测试集错误率: %.2f%%" % ((float(errorCount)/m)*100)) #打印错误率 |
| 288 | |
| 289 | |
| 290 | def showDataSet(dataMat, labelMat): |
no test coverage detected