美文网首页
KNN算法(含小例子)

KNN算法(含小例子)

作者: Ailien | 来源:发表于2018-11-02 09:47 被阅读0次

    最近在学习k-近邻算法,就记录一下,如有错误,欢迎指出。

    KNN算法是一个有监督无训练过程的算法,主要用于解决分类问题。

    KNN算法虽然是没有训练过程,但也将数据分为训练集和测试集。它的工作机制非常简单,给定测试样本,基于某种距离度量在训练集中找出与其最接近的k个训练样本,然后再根本这k个样本的标签信息来对测试样本进行预测。

    下面放一个小例子来帮助大家更深入的了解KNN算法的求解过程,语言为python。

    第一步:准备数据

    '''

    def createDataSet():

         group = np.array([[1.0,1.1],[0,0],[1.0,1.0],[0,0.1]])

        labels = ['A','B','A','B']

        return group, labels

    '''

    可通过运行```createDataSet() ```得到数据,测试数据为[0.1,0.0].

    第二步:编写KNN算法

    ```

    def classify0(newData,dataSet,label,k):

        lendata=dataSet.shape[0]

        data= np.tile(newData,(lendata,1))

        diff=(data-dataSet)**2

        diffsum=(diff.sum(axis=1))**0.5 #欧氏距离

        print(diffsum)

        sortdistance=np.argsort(diffsum).tolist() #输出排序的索引值

        print(sortdistance)

        Count={}

        for iin range(k):

            votelabel=label[sortdistance.index(i)]

            Count[votelabel]=Count.get(votelabel,0)+1

        a=sorted(Count.items(),key=lambda x:x[0],reverse=True)

        return a[0][0]

    ```

    打印分类结果```print(classify0([0,0.2],createDataSet()[0],createDataSet()[1],3))```

    输出结果为:B

    相关文章

      网友评论

          本文标题:KNN算法(含小例子)

          本文链接:https://www.haomeiwen.com/subject/ictltqtx.html