KNN算法实现鸢尾花数据集分类 | 您所在的位置:网站首页 › 鸢尾花案例 › KNN算法实现鸢尾花数据集分类 |
KNN算法实现鸢尾花数据集分类
作者介绍数据集介绍KNN算法介绍用KNN实现鸢尾花分类
作者介绍
乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:[email protected] 数据集介绍Iris鸢尾花数据集: 包含 3 类分别为山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica),共 150 条数据,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,通常可以通过这4个特征预测鸢尾花卉属于哪一品种。 数据集获取: 首先要在自己的Python环境中下载sklearn(进入个人虚拟环境并输入): pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn接着就可以输入下面代码,下载数据集 from sklearn.datasets import load_iris iris_dataset = load_iris()Iris数据集包含在sklearn库当中,具体在sklearn\datasets\data文件夹下,文件名为iris.csv。其数据格式如下: 算法介绍: KNN算法也称K最近邻算法,是有监督学习中最常用的分类算法之一。其算法原理是:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例, 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。 一句话形容 KNN 算法的思想:物以类聚,人以群分 在 KNN 算法中新样本到邻近样本的距离一般采用的是欧式距离(常用)或者曼哈顿距离
K=3时,距离绿色样本最近的3个实例中(圆圈内),有两个是蓝色、一个是红色。则绿色样本属于蓝色类。
K 值一般是通过交叉验证来确定的(经验规则来说,一般 k 是低于训练样本数的平方根) 交叉验证:本例中通过将原始数据按照一定的比例,如 4:1 ,拆分成训练数据集和测试数据集,K 值从一个较小的值开始选取,逐渐增大,然后计算整个集合的方差,从而确定一个合适的 K 值。 代码参考:链接: https://zhuanlan.zhihu.com/p/61996479. 用KNN实现鸢尾花分类实现过程: 1)利用slearn库中的load_iris()导入iris数据集 ; 2)使用train_test_split()对数据集进行划分,并进行数据集的随机分割; 3)KNeighborsClassifier()设置邻居数; 4)利用fit()构建基于训练集的模型; 5)使用predict()进行预测; 6)使用score()进行模型评估。 代码实现: from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split#用于模型划分 from sklearn.neighbors import KNeighborsClassifier##KNN算法包 import numpy as np # 载入数据集 iris_dataset = load_iris() X = iris_dataset['data']#特征 Y = iris_dataset['target']#类别 # 数据划分 X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0) #训练阶段 knn = KNeighborsClassifier(n_neighbors=5)#设置邻居数K knn.fit(X_train, Y_train)#构建基于训练集的模型 #测试评估模型 Y_pred=knn.predict(X_test) print("Test set score:{:.2f}".format(knn.score(X_test, Y_test))) # 做出预测,预测花萼长5cm宽2.9cm,花瓣长1cm宽0.2cm的花型 X_new = np.array([[5, 2.9, 1, 0.2]]) prediction = knn.predict(X_new) print("Prediction:{}".format(prediction)) print("Predicted target name:{}".format(iris_dataset['target_names'][prediction]))运行结果: 参考链接: 深入浅出KNN算法:https://zhuanlan.zhihu.com/p/61341071. 用鸢尾花数据集实现knn分类算法: https://blog.csdn.net/qq_43407321/article/details/102531080. 原生Python实现KNN分类算法: https://www.huaweicloud.com/articles/f162bc2162a6052a787bf912f64d01fb.html. |
CopyRight 2018-2019 实验室设备网 版权所有 |