【机器学习1】 k-近邻算法(kNN)—电影分类

k近邻法(k-nearest neighbor, k-NN)

原理:

存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。 最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。 

优缺点:

优点:精度高、对异常值不敏感、无数据输入假定。 

缺点:计算复杂度高、空间复杂度高。 

适用范围:数值型和标称型。 

Python实践案例:电影类型分类

已知:一些未看过电影的打斗镜头数、接吻镜头数、电影所属类型的标签

求:确定电影类型是爱情片还是动作片

训练集-样本电影示例

步骤:

1、计算已知类别数据集中的点与当前点之间的距离;

2、按照距离递增次序排序;

3、选取与当前点距离最小的k个点;

4、确定前k个点所在类别的出现频率;

5、返回前k个点所出现频率最高的类别作为当前点的预测分类。

具体如下:

计算未知电影与样本集中所有电影距离。

计算红点到每个黄点(已知电影)的距离,按距离递增排序,假设k=3,则表示按照前3个距离最近的电影类型出现的最高频率(比如动作片出现的频率为2/3)作为判定未知电影类型的标准和依据(即红点-未知电影为动作片),如下:

计算距离示例

代码:

1)准备数据:

代码



结果

2)kNN 算法预测数据: 


代码


结果



学习来源:《机器学习实战》 [美] Peter Harrington

Jack Cui 博文https://cuijiahua.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。