基于python3.7—spyder,用knn实现鸢尾花iris数据集分类

基于python3.6—spyder,用knn实现鸢尾花iris数据集分类

先说iris数据集

鸢尾花数据集:iris数据集包含150个样本,包含三种鸢尾花的五种特征,每种鸢尾花50朵,共150朵,所以iris数据集是一个1505列的二维表。

基于python3.7—spyder,用knn实现鸢尾花iris数据集分类

我下载的数据集是csv格式的,可以用excel打开,也可以用记事本打开,具体就长这样

基于python3.7—spyder,用knn实现鸢尾花iris数据集分类

如果数据集不一样(比如每一列有抬头或者第一列多了个序号)则代码是不一样的(使用如下代码时可能会出错)

再说knn原理

预测一个新的值x的时候,根据它距离最近K个点是什么类别来判断x属于哪个类别。

基于python3.7—spyder,用knn实现鸢尾花iris数据集分类

KNN分类算法的步骤:

1. 计算待 分类点 已知类别 的点之间的距离 2. 按照 距离递增 次序排序 3. 选取与待分类点 距离最小 K 个点 4. 确定前 K 个点所在类别的出现 次数 5. 返回前 K 个点出现 次数最高的类别 作为该点的预测分类

5.也可以加权平均)

训练 过程中,分类器获取训练数据并简单记忆 测试 过程中, KNN 通过将每张测试图与所有训练图像做比较并给出 K 个最相似的训练样本的标签 KNN的主要决定因素: K 值的选取; 点距离的计算

K值的选取

交叉验证:从选取一个较小的 K 值开始, 不断增加 K 的值 ,然后计算验证集的 方差 ,最终找到一个比较合适的 K 值。 k 较小,容易被噪声影响,发生过拟合。 k 较大,较远的训练实例也会对预测起作用,容易发生错误。

点距离的计算

基于python3.7—spyder,用knn实现鸢尾花iris数据集分类

终于轮到代码

数据集一定要和代码放在同一文件夹下并且命名为iris.csv

k=8;2/3是训练集,1/3是测试集

运行一下

基于python3.7—spyder,用knn实现鸢尾花iris数据集分类

每一次的结果都不一样是因为我代码中最开始就将数据随机打乱在进行分组的

基于python3.7—spyder,用knn实现鸢尾花iris数据集分类

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树预备知识常用开发工具209988 人正在系统学习中

来源:天才花

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月20日
下一篇 2022年10月20日

相关推荐