实验要求:
假设有零食、包、电器三类商品,商品分别有价格、评价两类属性,数据分别存在3个不同的txt中。现有一个商品,价格为10,评价为10,建立K-近邻模型,预测该商品属于哪一类商品?
实验数据集:
这份数据集共有3个文件,分别为零食.txt,包.txt 电器.txt,商品包含两个属性:价格和评价: 下面是3个不同的.txt内容,每一行分别为价格和评价
1.零食.txt
0.5,10
1,20
2,30
2.包.txt
100,3
300,2
500,1
3.电器.txt
50,5
40,8
30,9
2. K-近邻算法原理
K近邻算法,即K-Nearest neighbour algorithm,简称KNN算法; KNN算法作为有监督学习中较为通俗易懂的分类算法,在各类分类任务中经常使用。KNN模型的核心思想很简单,即近朱者赤、近墨者黑。工作机制非常简单:它通过将每一个测试集样本点与训练集中每一个样本之间测算欧氏距离,然后取欧氏距离最近的K个点(k是可以人为划定的近邻取舍个数,K的确定会影响算法结果),并统计这K个训练集样本点所属类别频数,将其中频数最高的所属类别化为该测试样本点的预测类别。
K-近邻算法,直接作用与带标记的样本,属于有监督的算法,既可用于分类,也可以用于预测。它属于一种“懒惰”的学习算法(Lazy learning),因为它实际上并没有“训练”的过程,也不产生一个真实意义上的“模型”,而是一字不差地将所有训练样本保存起来,等到需要对新样本进行分类的时候,将新样本与所有训练样本进行比较。找出与其距离最接近的K个样本,然后基于这个K个“邻居”所属的类别进行投票,决定分类结果。
3.K-近邻算法要点
计算步骤
- 算距离:给定测试对象,计算它与训练集中的每个对象的距离
- 找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
- 做分类:根据这k个近邻归属的主要类别,来对测试对象进行分类
相似度的度量
- 距离越近应该意味着这两个点属于一个分类的可能性越大。
- 距离不能代表一切,有些数据的相似度衡量并不适合距离
- 相似度衡量方法,包括欧式距离、夹角余玄。
类别的判定
- 简单投票法:少数服从多数
- 加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大。