美文网首页
Python3.0 实现 机器学习 K-近邻算法

Python3.0 实现 机器学习 K-近邻算法

作者: 程序员财富自由之路 | 来源:发表于2017-11-09 10:06 被阅读15次

    K-近邻算法具体思想

    (1)计算已知类别数据集中的点于点当前之间的距离

    (2)按照距离递增顺序排序

    (3)选取与当前距离最小的K个点

    (4)确定K个点所在类别出现的频率

    (5)返回k个点中出现频率最高的类别作为当前点的预测分类

    不多说 直接看代码:

    from numpy import *

    import operator

    #生成数据集

    def createDataSet():

    data = array([[1.1,1.0],[1,1],[0,0],[0,0.2]])

    lables = ['A','A','B','B']

    return data,lables

    # 定义分类器参数介绍:

    # inX 分类的输入向量[0,1]

    # lables 指的是数据所属于的分类,['A','A','B','B']

    # k是选中k个点 3

    # dataSet指的是数据矩阵array([1,1.1],[1.0,1.0],[0,0],[0,0.2]])

    def   classify0(inX, dataSet, labels, k):

    dataSetSize = dataSet.shape[0]

    # 求出坐标x,y差值

    diffMat = tile(inX, (dataSetSize,1)) - dataSet

    # 求出差值平方 difx**2 ,dify**y

    sqDiffMat = diffMat**2

    # 求出坐标差值的平方和

    sqDistance = sqDiffMat.sum(axis=1)

    # 平方和开根号就是与inX 真正相差的距离

    distance = sqDistance**0.5

    # 将distance排序,返回排序后的index这样可以定位到lable

    sortedDistance = distance.argsort()

    print(sortedDistance)

    #选择距离最小的k个点

    classCount = {}#dict 字典

    for i in  range(k):

    #选出距离最小排序后的 所属类型

    voteLable = labels[sortedDistance[i]]

    # 相当于 map 如果能取出 +1 不能默认是0

    classCount[voteLable] = classCount.get(voteLable,0) +1

    print(classCount.items())

    sortedClassCount =sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)

    return sortedClassCount[0][0]

    data,lables = createDataSet()

    my = classify0([1,1], data, lables,3)

    print(my)

    相关文章

      网友评论

          本文标题:Python3.0 实现 机器学习 K-近邻算法

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