机器学习----K-近邻算法(Python代码详解)
来源:互联网 发布:淘宝手机端导航怎么改 编辑:程序博客网 时间:2024/05/03 09:26
本博文的内容主要是在自学《Machine Learning in Action》的中文版《机器学习实战》的小结,原书中对调用的一些模块的函数并没有做出过多的解释,本文进行了总结和补充。
K-近邻算法
一、算法概述
K-近邻算法就是采用测量不同特征值之间的距离进行分类。
距离采用欧式距离计算公式,计算两个向量点xA和xB之间的距离:
例如,点(0,0)与点(1,2)之间的距离计算为:
如果数据集存在4个特征值,则点(1,0,0,1)与(7,6,9,4)之间的距离计算为:
- 优点:精度高,对异常值不敏感,无数据输入假定。
- 缺点 : 计算复杂度高,空间复杂度高。
Python代码实现
基本算法实现
- 使用Python准备数据
from numpy import *import operatordef creatDataset(): group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) #数据集 labels=['A','A','B','B'] #标签 return group,labels
- K-近邻算法
根据K-近邻算法的原理,其代码逻辑如下:- 计算已知类别属性的数据集中的每个点与当前点之间的距离;
- 按照距离从小到大是次序进行排序;
- 选取与当前距离最小的K个点;
- 确定K个点所在类别的出现频率;
- 返回前K个点出现频率最高的类别作为当前点的预测类别;
def classify0(intX,dataSet,labels,k): #1.1获得dataSet矩阵行数 dataSetSize=dataSet.shape[0] #1.1tile函数通过给定参数构建数组 diffMat=tile(intX,(dataSetSize,1))-dataSet #1.1数组中每个元素进行平方 sqDiffMat=diffMat ** 2 #1.1对多维数组第一轴进行相加求和 sqDistances=sqDiffMat.sum(axis=1) distances=sqDistances ** 0.5 #1.1开平方 #2.1返回排序数组的索引 sortedDistIndicies=distances.argsort() classCount={} #3.1 for i in range(k): #4.1获得从小到大排序后依次的标签 voteIlabel = labels[sortedDistIndicies[i]] #4.2记录前K个元素中不同标签出现的次数,classCount应为 字典类型 classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 #4.3按标签出现次数从多到少进行排序 sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse = True) #5 return sortedClassCount[0][0]
如果输入参数intX=[0,0],则该程序给出的分类结果因该为B
0 0
- 机器学习----K-近邻算法(Python代码详解)
- 机器学习实战学习,代码详解(K-近邻算法)
- 机器学习:K-近邻算法原理与Python代码实现
- 机器学习实战代码学习(K-近邻算法)
- python机器学习之K近邻算法
- 机器学习 & python k-近邻算法
- python机器学习之 K-近邻算法
- 《机器学习实战》K-近邻算法代码解析(1)
- 机器学习实战2:k近邻算法KNN(python)
- Python与机器学习(三):K-近邻算法
- Python机器学习实战--(k-近邻算法)
- 机器学习之K-近邻算法(Python描述)基础
- 机器学习(K-近邻算法)Python的基础知识
- 机器学习(基于Python)--k-近邻算法
- 【机器学习】k近邻算法(kNN)
- 机器学习 K-近邻算法(一)
- 机器学习--k-近邻(kNN)算法
- 机器学习(一)----k-近邻算法
- CSDN-markdown编辑器语法——字体、字号与颜色
- 【机器学习】SVM学习(三):线性分类器的求解
- parfor —— matlab 下的并行循环
- poj1679(次小生成树,kruskal)
- python学习笔记——基础练习
- 机器学习----K-近邻算法(Python代码详解)
- 【结论】【数学】筛质数
- 10个对所有学科都有用的Python数据可视化库
- Letter Combinations of a Phone Number
- No result defined for action org.album.web.PhotoAction and result input
- 5大类 软件架构风格
- 自己练习的第一个c++程序
- c::从打印100-200之间的素数这个小问题一点点的入坑c语言
- Codeforces 431C k-Tree【dp】