K邻近算法 (KNN) 原理及 python 实现代码
2017-11-29 17:31
363 查看
K邻近算法思想 :
在对于一个分类的问题而言,我们一般希望在已知样本点中找到一个和要预测的点完全相同的点,然后进行预测,但是由于我们的样本空间有限,所以不可能找到所有的要出现的点的全部集合。但是有一种直观的感受(据说是存在数学原理的)就是说一类相似事物,他们的特征非常接近,这说明什么呢 ? 说明 如果我们找不到与预测样本完全相同的特征点,但是我们可以找到离这个样本点最近的k个点,然后根据这k个点中所包含的类别,类别最多的类,作为要分类的时候得到的类别就可以了。算法的性能 :
优点 :精度高,对于异常值不敏感缺点 :算法的时间复杂度和空间复杂度较高
使用的数据 :数值型数据和标称型数据
数值型数据是指 :取值范围是无限的比如房子的价格,可以取任意值
标称型数据是指 :取值范围有限,比如某种东西最多可以分成几类
算法的核心 ——-确定K
确定K的方法一般是通过交叉验证法,获得最小误差的k当做我们要使用的k就好了。注意防止好欠拟合和过拟合。最好是可以把折线图画出来,找到肘点的位置 (图的直观性比较好)算法的实现 :
import numpy as np import operator import matplotlib.pyplot as plt #自己创建数据集 def createData () : group = np.array ([[1.0, 1.1], [1.1, 1.0], [0, 0], [0, 1]]) # 是 numpy 数组 而不是 np 矩阵 labels = ['A', 'A', 'B', 'B'] return group, labels # 使用 k 邻近算法构造分类器 # 各参数的意义 : inX是待分类向量 , DATAset 是训练集 ,labels 是训练集的标签 ,k 是我们要选择的 k # 返回所属于类的标签 def classify0 (inX, dataset, labels, k) : datasetsize = dataset.shape[0] #返回数组的行数 shape 返回型号 shape[0] 返回行数 shape[1] 返回列数 diffmat = np.tile (inX, (datasetsize, 1)) - dataset # tile 函数 把第一个 np 数组 复制 (i,j) 其中 i 代表行复制 i 次 j 表示 j 复制 j 次 先复制行再复列 distmat = diffmat ** 2 #计算距离 sqdist = distmat.sum (axis = 1) # 得到一个向量 每一个向量代表这一行的和 distance = sqdist ** 0.5 sorted_distancess = distance.argsort () # 从小到大排序 得到索引值 class_count = {} for i in range (k) : votelabel = labels[sorted_distancess[i]] if votelabel not in class_count.keys() : class_count.setdefault (votelabel,0) class_count[votelabel] += 1 mx = 0 res = -1 for index in class_count.keys () : if class_count[index] > mx : mx = class_count[index] res = index return res group,labels = createData () print (classify0 ([0,0], group, labels, 3))
相关文章推荐
- KNN算法原理(python代码实现)
- kNN原理及Python代码实现
- 随机森林的原理分析及Python代码实现
- KNN原理及python实现(kd树)
- KNN原理+python实现
- 梯度下降原理及线性回归代码实现(python/java/c++)
- 决策树原理实例(python代码实现)
- KNN分类算法原理与Python+sklearn实现根据身高和体重对体型分类
- Tensorflow卷积实现原理+手写python代码实现卷积
- KNN分类算法及python代码实现
- Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv)
- Python实现kNN(k邻近算法)
- KNN算法Python实现(代码来自机器学习实战)及注释
- Python机器学习-感知机原理及代码实现
- Knn原理及Python实现、数据展示
- HMM原理介绍 示例 python代码实现
- Python代码实现双色球原理
- 机器学习:K-近邻算法原理与Python代码实现
- 决策树原理及Python代码实现
- <基础原理进阶>机器学习算法python实现【1】--分类简谈&KNN算法