KNN算法(含小例子)

2018-11-02  本文已影响0人  Ailien

最近在学习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

上一篇下一篇

猜你喜欢

热点阅读