《机器学习实战》第二章——k-近邻算法——笔记

在看这一章的书之前,在网上跟着博主Jack-Cui的博客学习过,非常推荐。

博客地址:http://blog.csdn.net/c406495762 

《Python3《机器学习实战》学习笔记(一):k-近邻算法(史诗级干货长文)》

讲述的非常细致,文字幽默有趣,算法细节也讲述的非常清楚,较书中而言还有sklearn调库的补充内容。

因此,在这里,我只总结自己的笔记。

1.本章内容主要包含:k-近邻分类算法;从文本文件中解析和导入数据;使用Matplotlib创建扩散图;归一化数值。k-

2.k-近邻算法:采用测量不同特征值之间的距离方法进行分类。

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

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

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

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

4.k-近邻算法一般流程

1)收集数据:可以使用任何方法。

2)准备数据:距离计算所需要的数值,最好是结构化的数据格式。

3)分析数据:可以使用任何方法。

4)训练算法:此步骤不适用于k-近邻算法。

5)测试算法:计算错误率。

6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。

5.错误率是常用的评估方法,主要用于评估分类器在某个数据集上的执行效果。

6.在处理不同取值范围的特征值时,我们通常采用的方法是将数值归一化

7.机器学习一个很重要的工作就是评估算法的正确率,通常我们只提供已有数据90%作为训练样本来训练分类器,而使用其余的10%数据(随机选择)去测试分类器,检测分类器的正确率。

8.示例1:在约会网站上使用k-近邻算法

1)收集数据:提供文本文件;

2)准备数据:使用python解析文本文件;

3)分析数据:使用Matplotlib画二维扩散图;

4)训练算法:此步骤不适用于k-近邻算法;

5)测试算法:使用海伦提供的部分数据作为测试样本。

测试样本和非测试样本的区别在于:测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记为一个错误。

6)使用算法:产生简单的命令行程序,然后海伦可以输入一些特征数据以判断对方是否为自己喜欢的类型。

9.示例2:使用k-近邻算法的手写识别系统

1)收集数据:提供文本文件;

2)准备数据:编写函数classify0(),将图像格式转换为分类器使用的list格式;

3)分析数据:在Python命令提示符中检查数据,确保它符合要求;

4)训练算法:此步骤不适用于k-近邻算法;

5)测试算法:编写函数使用提供的部分数据集作为测试样本,测试样本与非测试样本的区别在于测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记为一个错误。

6)使用算法:本章未涉及。

10.k-近邻算法是分类数据最简单最有效的算法,但是在使用时我们必须有接近实际数据的训练样本数据,必须保存全部数据集,如果训练数据集很大,必须使用大量的存储空间。此外,由于必须对数据集中的每个数据计算距离值,实际使用时可能非常耗时。k-近邻算法另一个缺陷是它无法给出任何数据的基础结构信息,因此我们也无法知晓平均实例样本和典型实例样本具有什么特征。

猜你喜欢

转载自blog.csdn.net/wxw060709/article/details/82885007