最邻近规则分类(K-Nearest Neighbor)KNN算法

 自写代码:

 1 # Author Chenglong Qian
 2
 3 from numpy import *     #科学计算模块
 4 import operator                  #运算符模块
 5
 6 def createDaraSet():
 7     group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])#创建4行2列的数组
 8     labels=[‘A‘,"A",‘B‘,‘B‘]#标签列表
 9     return group,labels
10
11 group,labels=createDaraSet()
12
13 ‘‘‘k—近邻算法‘‘‘
14 def classify0(inX,dataSet,labels,k):     #inX:需要分类的向量,dataSet:训练样本,labels:标签,k:临近数目
15     ‘‘‘求距离‘‘‘
16     dataSetSize=dataSet.shape[0]        #样本数据行数,即样本的数量
17     diffMat=tile(inX,(dataSetSize,1))-dataSet  #(来自numpy)tile:重复数组;将inX重复dataSetSize行,1列次;获得每组数据的差值(Xi-X,Yi-Y)
18     sqDiffMat=diffMat**2                       #求平方
19     sqDistances=sqDiffMat.sum(axis=1)           #sum(axis=1)矩阵每一行相加,sum(axis=0)每一列相加
20     distances=sqDistances**0.5                  #开根号
21     sortedDistIndicies=distances.argsort()    #argsort()函数是将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。
22     classCount={}
23     ‘‘‘排序‘‘‘
24     for i in range(k):
25         voteIlabel=labels[sortedDistIndicies[i]]  #sortedDistIndicies[i]第i+1小元素的索引
26         classCount[voteIlabel]=classCount.get(voteIlabel,0)+1 #classCount.get(voteIlabel,0)返回字典classCount中voteIlabel元素对应的值,若无,则将其设为0
27                                                              #这里表示记录某一标签的数量
28     sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)#sorted(需要排序的list,key=自定义排序方式,是否反转排序结果)
29                                                                                             #items 将字典以列表形式返回  (python3.5中无 :iteritems将字典以迭代器形式返回)
30                                                                                             #itemgetter函数用于获取对象的第几维的数据 operator.itemgetter(1)使用第二个元素进行排序
31     return sortedClassCount[0][0]
32
33
34 ‘‘‘把文本记录转换成矩阵Numpy的解析程序‘‘‘
35 def file2matrix(filename):
36     fr=open(filename)
37     arrayOLines=fr.readlines()              #readlines():返回由文件中剩余的文本(行)组成的列表
38     numberOfLines=len(arrayOLines)            #返回对象的长度
39     returnMat=zeros((numberOfLines,3))
40     classLabelVector=[]
41     index=0
42     for line in arrayOLines:
43         line=line.strip()                   #strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
44         listFromLine=line.split(‘\t‘)          #split() 通过指定分隔符对字符串进行切片
45         returnMat[index,:]=listFromLine[0:3]
46         classLabelVector.append(int(listFromLine[-1]))
47         index+=1
48     return returnMat,classLabelVector

库代码

 1 from sklearn import neighbors
 2 from sklearn import datasets
 3
 4 knn = neighbors.KNeighborsClassifier()
 5
 6 iris = datasets.load_iris()
 7
 8 print iris
 9
10 knn.fit(iris.data, iris.target)
11
12 predictedLabel = knn.predict([[0.1, 0.2, 0.3, 0.4]])
13 print "hello"
14 #print ("predictedLabel is :" + predictedLabel)
15 print predictedLabel

原文地址:https://www.cnblogs.com/long5683/p/9523018.html

时间: 2024-11-07 00:24:40

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

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

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.KNN算法中,所选择的邻居都是已经正确分类的对象.该方法在定类决策上只依据最邻近的一个或

K Nearest Neighbor 算法

K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-Means算法不同的是,K-Means算法用来聚类,用来判断哪些东西是一个比较相近的类型,而KNN算法是用来做归类的,也就是说,有一个样本空间里的样本分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类.你可以简单的理解为由那离自己最近的K个点来投

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

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.KNN算法中,所选择的邻居都是已经正确分类的对象.该方法在定类决策上只依据最邻近的一个或

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

1. 概念: https://scikit-learn.org/stable/modules/neighbors.html 1. Cover和Hart在1968年提出了最初的临近算法 2. 分类算法(classification) 3. 输入基于实例的学习(instance-based leaning).懒惰学习(lazy learning) 开始时候不广泛建立模型,在归类的时候才分类 2. 例子: 3. 算法详述 1. 步骤: 为了判断未知实例的类别,以所有已知类别的实例作为参照 选择参数K

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

1 数据集介绍: 虹膜 150个实例 萼片长度,萼片宽度,花瓣长度,花瓣宽度 (sepal length, sepal width, petal length and petal width) 类别: Iris setosa, Iris versicolor, Iris virginica. 2. 利用Python的机器学习库sklearn: SkLearnExample.py from sklearn import neighbors from sklearn import datasets

最邻近规则分类KNN算法

例子: 求未知电影属于什么类型: 算法介绍: 步骤:  为了判断未知实例的类别,以所有已知类别的实例作为参照      选择参数K      计算未知实例与所有已知实例的距离      选择最近K个已知实例      根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别 细节: 关于K的选择 关于距离的衡量方法: 其他距离衡量:余弦值(cos), 相关度 (correlation), 曼哈顿距离 (Manhattan distance) 算法

最邻近规则分类

1. 综述 1.1 Cover和Hart在1968年提出了最初的邻近算法 1.2 分类(classification)算法 1.3 输入基于实例的学习(instance-based learning), 懒惰学习(lazy learning) 2. 例子: 未知电影属于什么类型? 3. 算法详述 3.1 步骤: 为了判断未知实例的类别,以所有已知类别的实例作为参照 选择参数K 计算未知实例与所有已知实例的距离 选择最近K个已知实例 根据少数服从多数的投票法则(majority-voting),让

机器学习三--分类--邻近取样(Nearest Neighbor)

最邻近规则分类 K-Nearest Neighbor 步骤: 1.为了判断未知实例的类别,以所有已知类别的实例作为参考. 2.选择参数K. 3.计算未知实例与所有已知实例的距离. 4.选择最近的K个已知实例. 5.根据少数服从多数,让未知实例归类为K个最邻近样本中最多数的类别. 优点:简单,易于理解,容易实现,通过对K的选择可具备丢噪音数据的强壮性. 缺点:1.需要大量空间存储所有已知实例.2.当样本分布不均衡时,比如其中一类样本实例数量过多,占主导的时候,新的未知实例很容易被归类这个主导样本.

k近邻算法(k-nearest neighbor,k-NN)

kNN是一种基本分类与回归方法.k-NN的输入为实例的特征向量,对应于特征空间中的点:输出为实例的类别,可以取多类.k近邻实际上利用训练数据集对特征向量空间进行划分,并作为其分类的"模型".k值的选择.距离度量及分类决策规则是k近邻的三个基本要素. 算法 输入:训练数据集T={(x1,y1),(x2,y2),--..,(xN,yN)} 输出:实例x所属的类y (1)根据给定的距离度量,在训练集T中找到与x最邻近的k个点,涵盖这k个点的x的邻域记作Nk(x) (2)在Nk(x)中根据分类