测试准确率 :param dataArr:测试集 :param labelArr: 测试集标签 :param w: 训练获得的权重w :param b: 训练获得的偏置b :return: 正确率
(dataArr, labelArr, w, b)
| 100 | |
| 101 | |
| 102 | def model_test(dataArr, labelArr, w, b): |
| 103 | ''' |
| 104 | 测试准确率 |
| 105 | :param dataArr:测试集 |
| 106 | :param labelArr: 测试集标签 |
| 107 | :param w: 训练获得的权重w |
| 108 | :param b: 训练获得的偏置b |
| 109 | :return: 正确率 |
| 110 | ''' |
| 111 | print('start to test') |
| 112 | #将数据集转换为矩阵形式方便运算 |
| 113 | dataMat = np.mat(dataArr) |
| 114 | #将label转换为矩阵并转置,详细信息参考上文perceptron中 |
| 115 | #对于这部分的解说 |
| 116 | labelMat = np.mat(labelArr).T |
| 117 | |
| 118 | #获取测试数据集矩阵的大小 |
| 119 | m, n = np.shape(dataMat) |
| 120 | #错误样本数计数 |
| 121 | errorCnt = 0 |
| 122 | #遍历所有测试样本 |
| 123 | for i in range(m): |
| 124 | #获得单个样本向量 |
| 125 | xi = dataMat[i] |
| 126 | #获得该样本标记 |
| 127 | yi = labelMat[i] |
| 128 | #获得运算结果 |
| 129 | result = -1 * yi * (w * xi.T + b) |
| 130 | #如果-yi(w*xi+b)>=0,说明该样本被误分类,错误样本数加一 |
| 131 | if result >= 0: errorCnt += 1 |
| 132 | #正确率 = 1 - (样本分类错误数 / 样本总数) |
| 133 | accruRate = 1 - (errorCnt / m) |
| 134 | #返回正确率 |
| 135 | return accruRate |
| 136 | |
| 137 | if __name__ == '__main__': |
| 138 | #获取当前时间 |
no outgoing calls
no test coverage detected