机器学习--KNN算法基本思想

机器学习--KNN算法基本思想
KNN算法--K近邻算法(K-Nearest Neighbors)
如下图所⽰,⽤肿瘤的⼤⼩表⽰横坐标,时间表⽰中坐标,其中红⾊表⽰良性肿瘤,蓝⾊表⽰恶性肿瘤。 根据下图能够得到8个点的初始信息。
四川卫视真情人生
假如此时出现了第9个点,它的落点在第7个点和第8个点之间,怎么判断它的属性是良性还是恶性呢?
在KNN的算法中,⾸先确定K的值,经典的K值为3,在这⾥K= 3,表⽰寻与第9个点最近的三个点。如下图:
此时,在最近的三个点中,全是恶性肿瘤,没有良性肿瘤,那么第9个点的标签则定义为恶性肿瘤。
KNN算法的本质就是,两个⾼度相似的样本,极有可能属于同⼀个标签,当然⽐较的样本数不⽌两个,K的取值就是⽐较样本的个数,在K 个样本中,哪个标签的样本数最多,那么该新样本的标签就确定了。
描述两个样本是否相似度,采⽤计算在特征空间中两个样本的距离来表⽰。
代码讲解:
1,⾸先准备好测试数据raw_data_X和测试标签raw_data_y,⽤列表表⽰
2,将列表转换成⼆维矩阵,X_train 表⽰测试数据,y_train表⽰测试标签
X_train = np.array(raw_data_X)
y_train = np.array(raw_data_y)
3,引⼊待预测的数据x
x = np.array([8.09360731,3.365731514])
4,计算x与特征空间每个向量的距离,即x与X_train中每个向量x_train的距离。采⽤欧拉距离来表⽰,公式如下:
亲水溶胶分别是平⾯和三维空间两点的计算⽅式。
distance = []
for x_train in X_train:
d = sqrt((np.sum((x_train - x)**2)))
distance.append(d)
#另⼀种写法
distance = [sqrt(np.sum((x_train -x)** 2)) for x_train in X_train]
5,将distance中的距离进⾏排序,按照从⼩到⼤的顺序排列。这⾥采⽤的是numpy中的argaort函数,排完序返回的是索引值。博雅汉语
减温减压⽐如[8,7,6,5,4,3,2,1,9,0],设置K的值,这⾥设置K= 6,那么从返回的索引排序值中,取前6个索引值表⽰的标签。
a = np.argaort(distance)
k = 6
topk_y = (y_train[i] for i in a[:k])
6,计算topk_y中每个标签出现的次数,那么次数出现最多的标签就是待预测数据所属标签,这⾥Counter的返回值是字典形式。
votes = Counter(topk_y)地方财政收入
predict = st_common(1)[0][0]
print(predict)
KNN算法是机器学习中思想极简单的分类算法。
优点:
1)简单、有效。
2)重新训练的代价较低(类别体系的变化和训练集的变化,在Web环境和电⼦商务应⽤中是很常见的)。
3)计算时间和空间线性于训练集的规模(在⼀些场合不算太⼤)。
4)由于KNN⽅法主要靠周围有限的邻近的样本,⽽不是靠判别类域的⽅法来确定所属类别的,因此
对于类域的交叉或重叠较多的待分样本集来说,KNN⽅法较其他⽅法更为适合。
食品安全质量检测学报
5)该算法⽐较适⽤于样本容量⽐较⼤的类域的⾃动分类,⽽那些样本容量较⼩的类域采⽤这种算法⽐较容易产⽣误分。
缺点:
1)KNN算法是懒散学习⽅法(lazy learning,基本上不学习),⼀些积极学习的算法要快很多。
2)类别评分不是规格化的(不像概率评分)。
3)输出的可解释性不强,例如决策树的可解释性较强。
4)该算法在分类时有个主要的不⾜是,当样本不平衡时,如⼀个类的样本容量很⼤,⽽其他类样本容量很⼩时,有可能导致当输⼊⼀个新样本时,该样本的K个邻居中⼤容量类的样本占多数。该算法只计算“最近的”邻居样本,某⼀类的样本数量很⼤,那么或者这类样本并不接近⽬标样本,或者这类样本很靠近⽬标样本。⽆论怎样,数量并不能影响运⾏结果。可以采⽤权值的⽅法(和该样本距离⼩的邻居权值⼤)来改进。
5)计算量较⼤。⽬前常⽤的解决⽅法是事先对已知样本点进⾏剪辑,事先去除对分类作⽤不⼤的样本

本文发布于:2024-09-23 14:37:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326144.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:样本   算法   标签   空间   距离   个点   学习
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议