机器学习 K-近邻算法

KNN算法属于有监督学习中的分类算法

算法原理:

1 计算未知点与已知点的距离

2 列出前K个与此未知点最近的已知点(已经归好类有标签)

3 统计此K个中出现最多次数的归类并把未知点归为此类。


实例:

有4个带标签的点 

[0,10]  A 

[0,8]   A

[10,0] B

[7,0]  B


求未知点[9,6]应该归为哪类

python实现如下:

from numpy import *
import operator
from os import listdir

def createDataSet():
    group = array([[0,10],[0,8],[10,0],[7,0]])
    labels = ['A','A','B','B']
    return group, labels


def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]#查看有几行标签
    print('dataSetSize',dataSetSize)
    
    diffMat = tile(inX, (dataSetSize,1)) - dataSet #每行复制一个未知点-每个已知点
    print('diffMat\n',diffMat)
    
    sqDiffMat = diffMat**2 #得到的差进行平方消除负数
    sqDistances = sqDiffMat.sum(axis=1) #把每个点得到的两个数如(25,16)进行相加得到 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值