一、KNN算法的简单了解

        在机器学习领域,KNN 算法是一款极为基础且简洁的算法,适配性很强,既能完成分类任务,也能应对回归问题。它的核心逻辑是通过衡量不同特征值之间的距离来实现分类操作。具体来说,任意一个 n 维输入向量,在特征空间中都对应着一个特定的点,而该算法的输出则是这个特征向量所对应的类别标签或者预测数值。

        还有一个关键特点,它不像传统机器学习算法那样有着明确的学习流程。其工作机制是借助训练数据对特征向量空间进行划分,而这种划分结果就直接作为最终的算法模型。在实际应用场景中,会存在一个样本数据集,也就是训练样本集,并且这个样本集中的每个数据都带有清晰的标签,这意味着我们清楚样本集中每个数据与其所属分类之间的对应关系。

        当输入一个没有标签的数据时,KNN 算法会将这个数据的每一个特征与样本集中数据的对应特征进行细致比对,进而找出样本中特征最为相近的数据(即最近邻)的分类标签。通常情况下,我们不会遍历样本数据集中的所有数据,而是仅选取前 k 个最相似的数据,这里的 “k” 便是 KNN 算法名称中 “K” 的由来,一般 k 是一个不超过 20 的整数。最后,算法会选择这 k 个最相似数据中出现次数最多的类别,将其作为新数据的分类结果。

        比如上图中我们要预测红色星星的点所代表的类别,我们选k=3的适合,发现蓝色六边形占两份,所以将红色星星分类于蓝色六边形的class2。

二、问题引出

海伦一直使用在线约会网站寻找适合自己的约会对象。她曾交往过三种类型的人:

        ·不喜欢的人

        ·一般喜欢的人

        ·非常喜欢的人

这些人包含以下三种特征

每年获得的飞行常客里程数

玩视频游戏所耗时间百分比

每周消费的冰淇淋公升数

该网站现在需要尽可能向海伦推荐她喜欢的人,需要我们设计一个分类器,根据用户的以上三种特征,识别出是否该向海伦推荐。

三、数据集格式

如下图

四、算法的流程实现

一、导入数据集,首先将文件路径记录,通过函数进行逐行读取。

二、对前面读取的数据进行归一化处理

三、用欧式距离计算结果

四、获取最近的k个点(以3为例)标签形成分类

五、输出分类预测结果

六、对逻辑进行补充,生成ROC曲线,准确率以及召回率

五、KNN算法存在的优缺点

KNN算法的优点:

简单易用,训练速度快,从结果上说还不错

KNN算法缺点:

对内存要求较高,预测阶段可能很慢

更多推荐