2.2.4 测试算法:作为完整程序验证分类器

 

 1 def datingclassTest():
 2     hoRatio = 0.20
 3     datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')
 4     normMat,ranges,minVals = autoNorm(datingDataMat)
 5     m = normMat.shape[0]   #m为样本条目数
 6     numTestVecs = int(m*hoRatio)  #10%的样本数据量
 7  
 8     errorCount = 0.0
 9     for i in range(numTestVecs):
10         classifierResult = classify0(normMat[i,:],normMat[numTestVecs:m,:],\
11                                      datingLabels[numTestVecs:m],12)
12             #normMat[i,:]~输入某一的特征向量 (1,3)
13             #normMat[numTestVecs:m,:]~训练样本数据为后90%的特征向量(900,3)
14             #datingLabels[numTestVecs:m]~训练样本标签值(900,)
15             #k取3,表示取训练样本中与输入向量相距最近的3个样本
16             #classify0()函数返回值为3个样本中,标签值数量最多的那个标签值
17         print('the classifier came back with:%d, the real answer is:%d'\
18               %(classifierResult, datingLabels[i]))
19             #打印根据k近邻算法得到的标签值,和样本数据中实际的标签值
20         if classifierResult != datingLabels[i]:
21             errorCount += 1.0
22             #如果两者不相等,则错误数量自增1.
23     print('the total error rate is: %f'%(errorCount/float(numTestVecs)))
24     #用错误数量总数 / 总的测试样本数得到错误率。

 

posted @ 2021-07-19 17:01  xinxinmama  阅读(160)  评论(0)    收藏  举报