KNN算法(1)

全称是K Nearest Neighbors

k近邻算法:

  • 思想简单
  • 需要的数学知识很少
  • 效果不错
  • 可以解释机器学习算法使用过程中的很多细节问题
  • 更加完整的刻画机器学习应用的流程

其思想总的来说就是在多个样本之间进行比较,越相似的话,新的样本就有更高的概率属于这个类别,一般用来解决分类问题,关于操作流程,简单来说,就是一个新样本进入以后,我们需要k个邻居(距离最近的样本)来判断猜测新样本的符合的类别

对于两个特征点的距离计算,可以使用欧拉距离,但是往往算的是不止三维的,所以可以使用

关于基础部分

例子:

假设有10个样本

他们的位置分别在

设置X_train和y_train

然后进行可视化

  plt.scatter(X_train[y_train==0,0],X_train[y_train==0,1],color="g")
plt.scatter(X_train[y_train==1,0],X_train[y_train==1,1],color="r")

设置一个新的样本

  x = np.array([8.0,3.4])

再在此基础上重新可视化

  plt.scatter(X_train[y_train==0,0],X_train[y_train==0,1],color="g")
plt.scatter(X_train[y_train==1,0],X_train[y_train==1,1],color="r")
plt.scatter(x[0],x[1],color="b")

找出新样本的位置

KNN算法的简单流程

求出新样本到各个样本的距离

  distances = [sqrt(np.sum((x_train - x)**2)) for x_train in X_train]

得出索引

设置一个nearest用来存放

设置k=6

设置一个topK_y用来找出k范围中的种类

  topK_y = [y_train[i] for i in nearest[:k]]

使用Counter(topK_y),来对种类进行一个整合划分,可看做一个字典

最后

  votes = Counter(topK_y)

就可以得出大致结果

最后设置predict_y用来存放最终结果

最新文章

  1. keepalived 知识备注
  2. 设计 api, url 的原则
  3. 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog
  4. felx项目属性(二)
  5. Android中直播视频技术探究之---基础知识大纲介绍
  6. POJ 3928 Ping pong(树状数组)
  7. C# Winform开发框架企业版V4.0新特性
  8. 【LeetCode题意分析&解答】39. Combination Sum
  9. Linux学习之查找命令find
  10. UVA 1291 Dance Dance Revolution(DP)
  11. NM常用网络命令
  12. ionic2 自定义cordova插件开发以及使用 (Android)
  13. init启动进程
  14. [Alpha阶段]第一次Scrum Meeting
  15. IIS做反向代理重定向到NodeJS服务器
  16. Expected value at 1:0 异常解决方法
  17. TCP 粘包问题浅析及其解决方案
  18. IIS7设置将域名不带www跳转到带www上
  19. css3实现水平、垂直居中
  20. Android 中Application向Activity 传递数值

热门文章

  1. leetcode TOP100 比特位计数
  2. python 按行查找文本文件,找出答案,并提示置顶答案
  3. C语言:虚拟地址 和编译模式
  4. C语言入门思路
  5. [刘阳Java]_CSS图片画廊
  6. 常见最基础的Dos命令.
  7. 【剑指offer】42.和为S的两个数字
  8. P3203 弹飞绵羊-分块
  9. powerdesigner连接postgresql数据库生成pdm及word文档
  10. OpenSUSE Leap 42.1 KDE Ultmate Linux Distribution终极Linux系统试用与SSH连接