测试分类器的正确率

对于分类器来说,错误率就是分类器给出的错误结果的次数初一测试数据的总数。完美分类器的错误率为0,错误率为1的分类器不会给出任何正确的结果。测试函数为:

def datingClassTest():
    hoRatio = 0.10 #测试数据占总数据的百分比
    datingDataMat, datingLabels = file2matrix('datingTestSet2.txt') #将文本信息转成numpy格式
    #datingDataMat为数据集,datingLabels为标签集
    normMat, ranges, minVals = autoNorm(datingDataMat)  #将datingDataMat数据归一化
    #normMat为归一化数据特征值,ranges为特征最大值-最小值,minVals为最小值
    m = normMat.shape[0] #取normMat的行数
    numTestVecs = int(m*hoRatio) #测试数据的行数
    errorCount = 0.0 #错误数据数量
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i,:], normMat[numTestVecs:m, :], datingLabels[numTestVecs:m], 3)
        #classify0为kNN分类器,normMat为用于分类的输入向量,normMat为输入的训练样本集(剩余的90%)
        #datingLabels为训练标签,3表示用于选择最近邻居的数目
        print("the classifier came back with: %d, the real answer is: %d" %(classifierResult, datingLabels[i]))
        if (classifierResult != datingLabels[i]):errorCount += 1.0 #分类器结果和原标签不一样,则errorCount加1
    print("the total error rate is : %f" %(errorCount/float(numTestVecs)))

datingClassTest()

>>
the classifier came back with: 3, the real answer is: 3
the classifier came back with: 2, the real answer is: 2
.
.
.
the classifier came back with: 1, the real answer is: 1
the classifier came back with: 3, the real answer is: 1
the total error rate is : 0.050000

可以通过设置hoRatio以及classify0中最近邻的值来调整分类器,得到更加精确的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值