机器学习实践 第2章 K-近邻算法概述 笔记(一)
来源:互联网 发布:防骗数据库 编辑:程序博客网 时间:2024/05/29 16:17
K-近邻算法是十分适合入门的分类算法,其优点为精度高,对异常值不敏感,无数据输入假定。缺点为计算复杂度和空间复杂度较高,适用于数值型数据和标称型数据。机器学习实践一书中,提供了python的代码。
from numpy import *import operator
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])#训练样本集
labels=['A','A','B','B'] #训练样本的标签集
return group,labels
def classify0(inX,dataset,labels,k): #inX为输入向量,对应上述例子,应该为一个1行两列的矩阵。dataset对应上述的group,labels对应labels,k为与当前点距离最小的k个点
dataSetSize = dataSet.shape[0]#返回dataset的行数,也就是返回训练集中的样本数量
diffMat = tile (inX,(dataSetSize,1))-dataset#tile()为扩充数组的一个函数,此处的意思是构建一个数组,有dataSetSize行,1列,其值为inX,然后再与dataset相减
sqDiffMat=diffMat**2#做平方运算
sqDistances=sqDiffMat.sum(axis=1)#按列求和,即每行相加,当axis=0时为按行求和
distances = sqDistances**0.5 #我平时在计算距离时,一般采用一个for循环,逐个计算,书中这种方法,简单方便,直接完成全部运算,值得学习
sortedDistIndicies=distances.argsort()#返回升序排列时的序数值,eg,sortedDistIndicies[0]便是原数组中最小值所处的序数
classCount={}#建立字典
for i in range(k):
voteIlabel=labels[sortedDistIndicies[i]]#返回最近的K个点的标签
clasCount[voteIlabel]=classCount.get(voteIlabel,0)+1 #get(voteIlabel,0)+1的意思便是如果原字典中有voteIlabel的key,则取其值+1。若无,则取0,再加1
sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)#对字典中的各项按照各标签的次数进行排序
return sortedClassCount[0][0]#返回出现次数最多的标签
0 0
- 机器学习实践 第2章 K-近邻算法概述 笔记(一)
- 机器学习实战-第2章(k-近邻算法)
- 机器学习实战(第2章 k-近邻算法)
- 《机器学习实战》课程笔记(第2章) k-近邻算法
- 机器学习笔记--K-近邻算法(一)
- 机器学习 K-近邻算法(一)
- 机器学习(一)----k-近邻算法
- 机器学习(一)-----K近邻算法
- 机器学习实战 第2章 k-近邻算法
- 机器学习实战---读书笔记: 第2章 k-近邻算法
- 机器学习实战—第2章 k-近邻算法
- 机器学习笔记(一)k近邻算法(k-Nearest Neighbor)
- 机器学习实战笔记(一) K-近邻(k-NN)算法
- 机器学习实战笔记(第二章:k近邻算法)
- 《机器学习实战》学习笔记<一>k近邻算法
- 机器学习实战第二章K近邻算法照葫芦画瓢实践。
- 机器学习算法与Python实践之(一)k近邻(KNN)
- 机器学习算法与Python实践之(一)k近邻(KNN)
- 快乐之道:游戏设计的黄金法则
- jQuery源码学习(版本1.11)-扩展工具函数
- VCS安装
- LinearLayout添加滚动条
- mac os x yosemite mysql
- 机器学习实践 第2章 K-近邻算法概述 笔记(一)
- 黑马程序员——多线程
- freemarker 笔记
- 黑马程序员——集合类
- OC编译C++类库 出错
- java控制linux
- Android 对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- Android 带你从源码的角度解析Scroller的滚动实现原理
- 黑马程序员——IO_编码与解码