下面的代码是在python3中运行,

 # -*- coding: utf-8 -*-
"""
Created on Tue Jul 3 17:29:27 2018 @author: Administrator
""" from numpy import * #NumPy
import operator #运算符模块 def createDataSet(): #这个只是导入数据的函数
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) #这个是4行2列的数组
labels=['A','A ','B','B']
return group ,labels def classify0 (inX,dataSet,labels,k) : #这个是k近邻算法的实现,要注意传入的参数有哪些.
#1,用于分类的输入向量inX;2,输入的训练样本集dataSet;3,标签向量labels;4,最后的参数k用于选择最近邻居的数目;
dataSetSize=dataSet.shape[0] #其中标签向量的元素数目和矩阵dataSet的行数相同.
diffMat=tile(inX,(dataSetSize,1))-dataSet #这里是调用了numpy的函数,tile diffMat已经是数组了 下面就是一些算法了(欧式距离的算法). 这里就是数组运算了,为了避免使用过多的for,这样可能会提升运行速度?
sqDiffMat=diffMat**2 #对数组diffMat的每个元素进行平方. python的写法就是这样简单.
sqDistances=sqDiffMat.sum(axis=1) #axis=1,表示的是按行相加. axis=0表示按列相加.
distances=sqDistances**0.5 #这个是开平方
sortedDistIndicies=distances.argsort() #返回的是从小到大的索引.关于变量的建立,还是把我不准,这个直接给了个变量名,并没有标注类型[],比如最小的数据是在第3个位置,就是2,那么第一个元素值就是2
classCount={}
for i in range(k): #这里可以认为是投票算法,要弄清它的输入和输出是什么.
voteIlabel=labels[sortedDistIndicies[i]] #确定前k个距离最小的主要分类,sortedDistIndicies[i]其实返回的是样本的位置,
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) #把'iteritems'改成了tiems,就可以在python3上运行了.
return sortedClassCount[0][0] #返回发生频率最高的,标签,,,,注意,这里返回的是标签,其实我们一直想要得到的也是某个东西的标签.返回的是我们想要的东西. group,labels=createDataSet()
print(group)
print(labels) a=classify0([0,0],group,labels,3)
print(a)

运行结果

最新文章

  1. MYSQL介绍安装及一些问题解决
  2. PLY文件(转)
  3. VirtualBox 使用技巧
  4. C# 调用 C++ dll (类型对照)
  5. MSDN:Code First 迁移
  6. 如何开启php报错
  7. NEUOJ711 异星工厂 字典树+贪心
  8. GitHub进一步了解
  9. IOS设置button 图片 文字 上下、左右
  10. SPOJ_10628_Count_on_a_Tree_(主席树+Tarjan)
  11. Git Bash 使用心得
  12. Android游戏开发研究与主角在地图滚动
  13. Java加密解密字符串
  14. 3D图片变换
  15. Linux Mint如何安装“微信、QQ、迅雷、WPS办公软件”等国内上瘾软件
  16. Outlook插件开发(非VSTO),欢迎交流
  17. RN如何基于js代码手动打一个main.jsbundle
  18. [ZJOI2007]仓库建设(斜率优化)
  19. Gym 101775J Straight Master(差分数组)题解
  20. python 任务计划

热门文章

  1. Use PSO to find minimum in OpenCASCADE
  2. jQuery源码04 data() : 数据缓存
  3. css3的新特性选择器-------属性选择器
  4. Tachyon的配置详解
  5. Android ijkplayer在windows下编译并导入Android Studio
  6. cocos2d-x cocoStudioUI编辑器导出文件的使用
  7. absolute、relative,toggle()
  8. GestureDetector- 滑屏手势方式实现
  9. .Net Standard和各平台关系
  10. 网站新建移动站,做了link rel="canonical" 等于主站URL后,全站被百度K了。