基于python3.6—spyder,用knn实现鸢尾花iris数据集分类
先说iris数据集
鸢尾花数据集:iris数据集包含150个样本,包含三种鸢尾花的五种特征,每种鸢尾花50朵,共150朵,所以iris数据集是一个150行5列的二维表。
我下载的数据集是csv格式的,可以用excel打开,也可以用记事本打开,具体就长这样
如果数据集不一样(比如每一列有抬头或者第一列多了个序 )则代码是不一样的(使用如下代码时可能会出错)
再说knn原理
当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。
KNN分类算法的步骤:
1. 计算待 分类点 与 已知类别 的点之间的距离 2. 按照 距离递增 次序排序 3. 选取与待分类点 距离最小 的 K 个点 4. 确定前 K 个点所在类别的出现 次数 5. 返回前 K 个点出现 次数最高的类别 作为该点的预测分类
(5.也可以加权平均)
在 训练 过程中,分类器获取训练数据并简单记忆 在 测试 过程中, KNN 通过将每张测试图与所有训练图像做比较并给出 K 个最相似的训练样本的标签 KNN的主要决定因素: K 值的选取; 点距离的计算
K值的选取
交叉验证:从选取一个较小的 K 值开始, 不断增加 K 的值 ,然后计算验证集的 方差 ,最终找到一个比较合适的 K 值。 k 较小,容易被噪声影响,发生过拟合。 k 较大,较远的训练实例也会对预测起作用,容易发生错误。
点距离的计算
终于轮到代码
数据集一定要和代码放在同一文件夹下并且命名为iris.csv
k=8;2/3是训练集,1/3是测试集
运行一下
每一次的结果都不一样是因为我代码中最开始就将数据随机打乱在进行分组的
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树预备知识常用开发工具209988 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!