原生Python实现knn算法——鸢尾花实例

本文介绍了如何使用原生Python实现KNN算法,重点在于理解KNN的核心思想和算法设计过程。通过读取鸢尾花数据集,创建测试集和训练集,计算欧几里得距离,找出最近邻并预测类别。代码实现未进行距离的平方根运算,但不影响分类效果。测试集的成功率是评估算法性能的关键指标。
摘要由CSDN通过智能技术生成

原生python实现KNN算法

KNN算法的核心思想是

如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

算法设计

1)首先需要读取文件中的数据,通过生成随机数随机获取文件中的数据组成测试集,剩下的数据当做训练集
2)计算测试机和训练集之间的欧几里得距离(这里我并没有开根号,因为我认为开根号不影响两个数据集的对比,反而多了步运算)
3)取得与测试集距离最近的k个训练样本集合,预测这个样本所属的类别
4)计算并输出测试成功率

源代码

1)引入需要的包,打开文件获取数据,通过生成随机数在文件中获取数据组成测试集(这里只用了10个数据做测试集),剩下的数据自动成为训练集
数据均在iris.csv中,测试集名为testSet,训练集名为trainingSet

import numpy as np
import pandas as pd
import operator
#得到鸢尾花的数据
def getExcel():
    #先打开文件再读取能避免路径或文件名出现中文名的错误
    f = open('iris.csv')
    iris=pd.rea
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值