自写代码:

 # Author Chenglong Qian

 from numpy import *     #科学计算模块
import operator #运算符模块 def createDaraSet():
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 group,labels=createDaraSet() '''k—近邻算法'''
def classify0(inX,dataSet,labels,k): #inX:需要分类的向量,dataSet:训练样本,labels:标签,k:临近数目
'''求距离'''
dataSetSize=dataSet.shape[0] #样本数据行数,即样本的数量
diffMat=tile(inX,(dataSetSize,1))-dataSet #(来自numpy)tile:重复数组;将inX重复dataSetSize行,1列次;获得每组数据的差值(Xi-X,Yi-Y)
sqDiffMat=diffMat**2 #求平方
sqDistances=sqDiffMat.sum(axis=1) #sum(axis=1)矩阵每一行相加,sum(axis=0)每一列相加
distances=sqDistances**0.5 #开根号
sortedDistIndicies=distances.argsort() #argsort()函数是将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。
classCount={}
'''排序'''
for i in range(k):
voteIlabel=labels[sortedDistIndicies[i]] #sortedDistIndicies[i]第i+1小元素的索引
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1 #classCount.get(voteIlabel,0)返回字典classCount中voteIlabel元素对应的值,若无,则将其设为0
#这里表示记录某一标签的数量
sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)#sorted(需要排序的list,key=自定义排序方式,是否反转排序结果)
#items 将字典以列表形式返回 (python3.5中无 :iteritems将字典以迭代器形式返回)
#itemgetter函数用于获取对象的第几维的数据 operator.itemgetter(1)使用第二个元素进行排序
return sortedClassCount[0][0] '''把文本记录转换成矩阵Numpy的解析程序'''
def file2matrix(filename):
fr=open(filename)
arrayOLines=fr.readlines() #readlines():返回由文件中剩余的文本(行)组成的列表
numberOfLines=len(arrayOLines) #返回对象的长度
returnMat=zeros((numberOfLines,3))
classLabelVector=[]
index=0
for line in arrayOLines:
line=line.strip() #strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
listFromLine=line.split('\t') #split() 通过指定分隔符对字符串进行切片
returnMat[index,:]=listFromLine[0:3]
classLabelVector.append(int(listFromLine[-1]))
index+=1
return returnMat,classLabelVector

库代码

 from sklearn import neighbors
from sklearn import datasets knn = neighbors.KNeighborsClassifier() iris = datasets.load_iris() print iris knn.fit(iris.data, iris.target) predictedLabel = knn.predict([[0.1, 0.2, 0.3, 0.4]])
print "hello"
#print ("predictedLabel is :" + predictedLabel)
print predictedLabel

最邻近规则分类(K-Nearest Neighbor)KNN算法的更多相关文章

  1. K NEAREST NEIGHBOR 算法(knn)

    K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-M ...

  2. K Nearest Neighbor 算法

    文章出处:http://coolshell.cn/articles/8052.html K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KN ...

  3. kNN(K-Nearest Neighbor)最邻近规则分类

    KNN最邻近规则,主要应用领域是对未知事物的识别,即推断未知事物属于哪一类,推断思想是,基于欧几里得定理,推断未知事物的特征和哪一类已知事物的的特征最接近: K近期邻(k-Nearest Neighb ...

  4. kNN(K-Nearest Neighbor)最邻近规则分类(转)

    KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighb ...

  5. 机器学习--最邻近规则分类KNN算法

    理论学习: 3. 算法详述        3.1 步骤:      为了判断未知实例的类别,以所有已知类别的实例作为参照      选择参数K      计算未知实例与所有已知实例的距离      选 ...

  6. python_机器学习_最临近规则分类(K-Nearest Neighbor)KNN算法

    1. 概念: https://scikit-learn.org/stable/modules/neighbors.html 1. Cover和Hart在1968年提出了最初的临近算法 2. 分类算法( ...

  7. 4.2 最邻近规则分类(K-Nearest Neighbor)KNN算法应用

    1 数据集介绍:   虹膜     150个实例   萼片长度,萼片宽度,花瓣长度,花瓣宽度 (sepal length, sepal width, petal length and petal wi ...

  8. 最邻近规则分类KNN算法

    例子: 求未知电影属于什么类型: 算法介绍: 步骤:  为了判断未知实例的类别,以所有已知类别的实例作为参照      选择参数K      计算未知实例与所有已知实例的距离      选择最近K个已 ...

  9. K nearest neighbor cs229

    vectorized code 带来的好处. import numpy as np from sklearn.datasets import fetch_mldata import time impo ...

随机推荐

  1. ssh免密登陆及时间设置

    1.ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa // 在自己主机生成私钥和公钥 2.scp id_rsa.pub centos@s201:/home/centos ...

  2. Linux常用基本命令( tree, pwd, cd )

    pwd与cd命令 >pwd命令是“print working directory”中每个单词的首字母缩写,其功能是显示当前工作目录的绝对路径.在实际工作中,我们在命令行操作命令时,经常会在各个目 ...

  3. 【 js 算法类】这么全的数组去重,你怕不怕?

    以 var arr = [1,2,3,1]; 作为测试用例 方法一:双循环   (时间复杂度比较高,性能一般.) A.(1) function unique(arr) { var newArr = [ ...

  4. MySql处理函数

    Lower(name) 转换为小写 Upper(name)转换为大写 Substr(name,length,index):从index开始截取length个字符串 Length(name) 获取长度 ...

  5. JavaScript高级编程———基本包装类型String和单体内置对象Math

    JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...

  6. Angular 中引入BootStrap

    由于Bootstrap官方目前并没有发布Angular的相关类库进行支持,当前Angular只能引用使用Bootstrap相关的样式.无法使用Bootstrap自带的脚本逻辑.以下以Angular7和 ...

  7. 【java】一些零碎的知识点

    java注释文档 一些常用的javadoc标签 常用javadoc标签 @see: other-class 引用other-class 生成的html文档会有一个See Alse 作为超链接的只是条目 ...

  8. WOSA/XFS PTR Form解析库—头文件

    class AFX_EX_CLASS CNuXfsForm {public: CNuXfsForm(); ~CNuXfsForm(); /******************************* ...

  9. Adobe Flash Builder 4.6 打开时提示Failed to create the Java Virtual Machine

    最近使用actionscript来编程,用到Adobe Flash Builder 工具,之前一直用着都没事的,今天打开突然就报了这个错误,然后就打不开了 好了,不多说,直接来吧. 首先在你的Adob ...

  10. 快速配置webpack 4.x

    区分开发模式和生产模式: npm run start——开发模式,启用devServer,文件的改动实时更新.刷新 npm run build——生产模式,打包文件到dist文件夹 // packag ...