K近邻算法-KNN-python简单实现

女爷i 2022-03-17 14:06 351阅读 0赞

KNN算法是一种简单的机器学习算法,从大致原理上来理解相对简单。

主要思路就是计算要分类的测试特征向量与训练数据集的特征向量的距离,计算距离的方法可以有很多种(如欧氏距离,海明距离),选取与其距离最小的k个特征向量,然后分析这k个向量所属的类别,其中,数量最多的类别可是做测试数据的类别。因此KNN可用于简单分类。

K值得选择会对K近邻算法的结果产生重大影响。

k近邻法没有显式的学习过程。没有训练算法的过程。


1、优缺点分析

在这里插入图片描述

2、一般流程

在这里插入图片描述

3、伪代码过程

在这里插入图片描述

4、《机器学习实战》源码分析
  1. from numpy import *
  2. import numpy as np
  3. import operator
  4. # print("hello, world")
  5. def createDataSet():
  6. group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) # 特征向量
  7. labels = ['A', 'A', 'B', 'B'] # 标签
  8. return group, labels
  9. group, labels = createDataSet()
  10. # In[39]:
  11. def classify0(inX, dataSet, labels, k):
  12. dataSetSize = dataSet.shape[0] # 特征向量的数量,4
  13. diffMat = tile(inX, (dataSetSize, 1)) - dataSet # tile方法可以将矩阵以指定的方式扩展,这里用来快速计算差值
  14. sqDiffMat = diffMat ** 2 # 计算差值的平方
  15. sqDistances = sqDiffMat.sum(axis=1) # 平方和的计算
  16. distances = sqDistances ** 0.5 # 开平方,得到距离
  17. sortedDistIndicied = distances.argsort()# 按数值的升序排列返回下标
  18. classCount = { }
  19. for i in range(k):
  20. voteIlabel = labels[sortedDistIndicied[i]]
  21. classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 # 字典的get方法,如果有这个key,则选择它的值,否则选择0,然后+1
  22. sortedClassCount = sorted(classCount.items(), # 给字典排序
  23. key=operator.itemgetter(1), reverse=True)
  24. return sortedClassCount[0][0]
  25. print(classify0([0.2, 0.5], group, labels, 3))

1、对numpy中的titl方法的分析

在这里插入图片描述

2、两种轴的求和方式

在这里插入图片描述

3、给字典按值排序的方法

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,351人围观)

还没有评论,来说两句吧...

相关阅读

    相关 K近邻算法

    一、kNN算法的工作原理 官方解释:存在一个样本数据集,也称作训练样本集,并且样本中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的新数据后

    相关 k近邻算法matlab实现_k近邻算法

    k 近邻法 (k-NN) 是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化 问题)。它的特点是对特征空间进行搜索。除了k近邻法,本章还对以下几个问题进行较深

    相关 k-近邻算法

    从今天开始,与大家分享我学习《Machine Learning In Action》这本书的笔记与心得。我会将源码加以详细的注释,这是我自己学习的一个过程,也是想通过这种方式帮

    相关 K近邻算法-KNN-python简单实现

    KNN算法是一种简单的机器学习算法,从大致原理上来理解相对简单。 主要思路就是计算要分类的测试特征向量与训练数据集的特征向量的距离,计算距离的方法可以有很多种(如欧氏距离,海