KNN算法实现鸢尾花的分类
- 题目
原生python实现knn分类算法,用鸢尾花数据集。
- 题目分析
KNN算法:
- 准备数据:来源百度下载鸢尾花数据集,共150组数据,将数据分为训练数据和测试数据,训练数据为120组,测试数据为30组。(KNN算法中训练集与测试集的比例应为0.74:0.25)。
- 设置特征数据和标签:花萼长度、花萼宽度、花瓣长度、花瓣宽度作为特征数据,鸢尾花种类为标签
- 设置邻居个数
- 选择距离的计算方式(采用欧几里得距离)
- 遍历进行求解距离(测试数据与训练数据之间的距离)
- 对每个测试数据求得的距离数据进行排序,按照邻居个数进行选择邻居,即选择距离最小的几个邻居。
- 预测结果,与其真实类别进行比较,计算准确率
- 算法设计
对数据的处理:
训练数据的处理:(测试数据同训练数据的处理方法)
对数据按行处理,去空格并按“,”将数据进行分割,前四列为特征数据,第五列为标签即鸢尾花的类别,使用了np.zeros(shape, dtype=float, order='C')返回:返回来一个给定形状和类型的用0填充的数组;
利用欧几里得公式计算测试机与训练集函数之间的距离
欧几里得距离:
对邻居的选择:
对每个测试数据求得的距离进行排序,选择距离最小的k 个邻居
对邻居的预测类别进行分类,得出预测结果
计算预测的正确率,即判断预测结果与实际类别是否相同
- 运行结果
- 总结
这次编程首先学习了对文本文件的处理,文本的读入,对数据的处理在这块卡了很久,后来是在一个博客里面看到的文本数据的处理方式,将数据进行分割,了解到了zeros()函数,使用的很僵硬,数据处理结束就是对KNN算法的设计了,该算法主要是距离的求解方法和邻居个数的选择,在求解距离时复习了距离的求解方法,在此采用的欧几里得距离,使用sort()函数对距离进行排序,按距离最小选择邻居,进行预测类别和真实类别的比较得出准确率。在此次编程时还学习了python中函数的使用,将每一个功能分别用函数的方式进行呈现。