K-近邻算法(kNN)python实现

机器学习实战第二章

        K-近邻算法采用测量不同特征之间的距离方法进行分类。

kNN.py

from numpy import *
import operator


"""
inX:用于分类的输入向量
dataSet:输入的训练样本集
labels:标签向量
k:选择最近邻居的数目
"""
def classify0(inX,dataSet,labels,k):
    dataSetSize=dataSet.shape[0]
    """
    ①计算已知类别数据集中的点与当前点之间的距离
    """
    diffMat=tile(inX,(dataSetSize,1))-dataSet
    sqDiffMat=diffMat**2
    sqDistances=sqDiffMat.sum(axis=1)
    distance=sqDistances**0.5
    """
    ②按照距离递增次序排序
    """
    sortedDistIndicies=distance.argsort()
    """
    ③选取与当前点距离最小的k个点
    """
    classCount={}
    for i in range(k):
        voteIlabel=labels[sortedDistIndicies[i]]
        classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
    """
    ④排序,确定前k个点所在类别的出现频率
    """
    sortedClassCount=sorted(classCount.items(),
                            key=operator.itemgetter(1),reverse=True)
    """
    ⑤返回前k个点出现频率最高的类别作为当前点的预测分类
    """
    return sortedClassCount[0][0]

kNNTest.py

import kNN
from numpy import *

"""
创建数据集和标签
"""
def createDataSet():
    group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
    labels=['A','A','B','B']
    return group,labels


dataSet,labels=createDataSet()
inX=([1.0,1.2])
kNN.classify0(inX,dataSet,labels,3)


    

 
 

猜你喜欢

转载自blog.csdn.net/u010901792/article/details/76173704
今日推荐