def datingClassTest():
#这个常量的定义是为了截取10%的数据
hoRatio = 0.10
#调用处理数据的函数
datingDataMat,datingLabels = file2matrix("E:\\datingTestSet2.txt")
#调用归一值函数
normat,ranges,minVals=autoNorm(datingDataMat)
#获取数据的行数
m=normat.shape[0]
#取数据的10%
numTestVecs=int(m*hoRatio)
#定义错误计值变量
errorCount=0.0
#开始循环进行数据处理
for i in range(numTestVecs):
#调用函数classifiereRsult(inx,dataSet,labels,k)对算法进行训练
#由此可以看出K邻近算法的局限性:它不能自动优化唯一可以调整的数值是k还是通过人工调整,只要k不变无论执行多少次结果都不会变
#如k值是3时错误率是0.05 k值是4时错误率是0.03 是5时错误率是0.04 numtestbec表示行从numTestVec到m即跳过前10%
classifierResult=classify(normat[i,:],normat[numTestVecs:m,:],datingLabels[numTestVecs:m],4)
print "分类结果是:%d,真实结果是:%d".decode("utf-8")%(classifierResult,datingLabels[i])
if(classifierResult!=datingLabels[i]):
print "这个结果错了!".decode("utf-8")
errorCount+=1.0
print "总的错误率是:%f".decode("utf-8")%(errorCount/float(numTestVecs))
机器学习——k邻近算法测试
最新推荐文章于 2023-10-09 19:41:34 发布