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列车

回归自我