• KNN_python


    #coding:utf-8
    from numpy import *
    import operator
    def file2matrix(filename):
        fr=open(filename)
        arrline=fr.readlines()
        lenth=len(arrline)
        matrix=zeros((lenth,3))#3表示特征个数
        label=[]
        index=0
        for line in arrline:
            line=line.strip()
            linearr=line.split("	")
            matrix[index,:]=linearr[0:3]
            label.append(linearr[-1])
            index=index+1
        return matrix,label
    def Norm(data):#特征取值差异较大时,容易出现向取值大特征偏向,故一般情况都需要正则化训练集
        minval=data.min(0)
        maxval=data.max(0)
        m=len(data)
        maxjmin=maxval-minval
        fenmu=data-tile(minval,(m,1))
        norm=fenmu/tile(maxjmin,(m,1))
        return norm
    def classifier(testdata,data,label,k):#采用欧式距离作为量度
        lenth=data.shape[0]
        jian=data-tile(testdata,(lenth,1))
        sqr=jian**2
        add=sqr.sum(1)
        ksqr=add**0.5
        sortindex=ksqr.argsort()#为了统计标签频次,将索引作为列表值
        dict={}
        for i in range(k):
            lab=label[sortindex[i]]
            dict[lab]=dict.get(lab,0)+1
        resort=sorted(dict.iteritems(),key=operator.itemgetter(1),reverse=True)
        return resort[0][0]
    def testclassifier():
        rat=0.05#将训练集的%5作为测试集
        data,label=file2matrix("dat.txt")
        norm=Norm(data)
        m=norm.shape[0]
        testdata=int(rat*m)
        error=0.0
        for i in range(testdata):
            result=classifier(norm[i,:],norm[testdata:m,:],label[testdata:m],3)
            if result!=label[i]:
                error+=1.0
        print error/float(testdata)
    testclassifier()
    
  • 相关阅读:
    react 中cookie的使用
    使用react-router-dom 来搭建react路由
    取消浏览器的自动缓存
    vue 的$nextTick方法,与$set()方法
    vue监听data以及prop中的参数变化
    iview树的修改某个节点,树刷新后自动展开你刚才展开的所有节点
    Linux vim常用命令
    Linux yum源配置
    博客园鼠标点击特效
    Linux 简介
  • 原文地址:https://www.cnblogs.com/semen/p/6958978.html
Copyright © 2020-2023  润新知