Go语言开发分布式任务调度 ,轻松搞定高性能Crontab
Go语言开发分布式任务调度 ,轻松搞定高性能Crontab
KNN算法介绍及源代码实现
1.KNN算法简介
邻近算法或K-最近邻分类算法是数据挖掘分类技术中最简单的方法之一。所谓K近邻就是K个最近邻,也就是说每个样本都可以用它最近的K个最近邻来表示。最近邻算法是对数据集中的每条记录进行分类的方法。
k-最近邻法是一种基本的分类和回归方法,是监督学习中常用的方法。k-最近邻算法假设给定一个训练数据集,其中样本的类别已经确定。在分类时,根据其K个最近邻居的训练实例类别,通过多数投票来预测新实例。
2.KNN算法的核心思想
KNN算法的核心思想是,如果一个样本在特征空间中的K个最近邻中的大部分属于某个类别,则该样本也属于该类别,并具有该类别中样本的特征。在该方法中,仅根据最接近的一个或多个样本的类别来确定待分类样本的类别。在类别决策中,KNN方法只与极少数相邻样本有关。由于KNN方法主要依赖于周围有限的相邻样本,而不是通过区分类域的方法来确定类别,因此对于类域重叠或重叠较多的样本集,KNN方法比其他方法更适合。
KNN算法的三个要素
K-最近邻法的三要素:距离度量、K值的选取和分类决策规则。常见的距离度量是欧几里德距离和更一般的pL距离。当k值较小时,k近邻模型较为复杂,容易出现过拟合;当k值较大时,k近邻模型更简单,更容易欠拟合。因此,k值的选择会对分类结果产生重大影响。k值的选择体现了近似误差和估计误差的权衡,通常通过交叉验证选择最佳k。
四。KNN算法的优缺点
优势
1.简单易懂,易于实现,不需要估计参数,不需要训练;
2.适用于稀有事件的分类;
3.特别适合多模态问题(对象有多个类别标签),kNN比SVM表现更好。
劣势
1.这种算法在分类方面有一个重大缺陷。当样本不平衡时,比如一个类样本量大,其他类样本量小,就可能导致新样本输入时,样本的K个邻居中有大量样本。
2.这种方法的另一个缺点是需要大量的计算,因为需要计算每个待分类文本与所有已知样本之间的距离来获得其k个最近邻。
动词 (verb的缩写)源代码的简单实现
1.指南包
将numpy作为np导入
从数学导入sqrt
从集合导入计数器
从指标导入准确度_分数
复制代码
2.初始化kNN分类器
类别KNN分类器:
def __init__(self,k):
" ""初始化kNN分类器" " "
断言k >= 1,“k必须有效”
self.k = k
自我。_X_train =无
自我。_y_train =无
复制代码
3.训练数据集
定义适合度(自我、X训练、y训练):
" ""根据训练数据集X_train和y_train训练kNN分类器" " "
断言X _ train . shape[0]= = y _ train . shape[0],\
“X列车的尺寸必须等于y列车的尺寸”
坚持自我
" X_train的大小必须至少为k . "
自我。_X火车= X火车
自我。y列车= y列车
回归自我