KNN算法以及使用它实现鸢尾花分类案例

KNN算法介绍:
        
通过寻找最近邻的方式来对新的数据进行分类或预测。
用图片可以直观的理解:

 

KNN算法的运作过程如下:

通过使用鸢尾花数据集,可以进行分类算法的训练、测试和性能评估。

          2.获取数据集:


导入了 sklearn 库中的相关模块和方法,用于实现 KNN 算法对 iris(鸢尾花)数据集的分类任务。

          3.打印出数据集:

结果展示:
特征矩阵并未完全截图


若想更直观的感受数据集可采用以下办法(代码是借鉴的):

第一行导入了Pandas库,用于处理结构化的数据。第二行新建了一个DataFrame对象iris_df,其中包含了鸢尾花数据集的特征数据iris.data,并通过参数columns=iris.feature_names将特征名字作为列的名称。第三行将鸢尾花数据集的目标数据iris.target添加到新的DataFrame中作为一列,名称为class。最后一行输出整个DataFrame对象iris_df,可以查看整个数据集的特征和目标数据。

结果展示:



结果展示:








4.标准化数据:

获取数据和目标变量:通过load_iris()函数得到鸢尾花数据集的所有样本特征值,存储在iris.data变量中,对应的目标变量存储在iris.target变量中。
将数据集分为训练集和测试集:调用train_test_split()函数将数据集分为训练集和测试集。其中,X_train、y_train为训练集数据和目标变量,X_test、y_test为测试集数据和目标变量。设置参数test_size=0.2 表示将原始数据集随机划分成80%的训练集和20%的测试集。
数据标准化:使用StandardScaler().fit()函数对数据进行标准化。首先我们用训练集数据拟合一个标准化器scaler,然后使用transform()函数将训练集和测试集数据都进行标准化处理。


5.构建基于训练集的模型:

创建KNN分类器:使用KNeighborsClassifier()函数创建一个KNN分类器,将其赋值给knn变量。其中,参数n_neighbors=5表示选择最近邻居的个数为5。
训练模型:使用fit()方法拟合模型,将训练数据集X_train和目标变量y_train作为参数输入。该方法将根据输入数据和模型参数,构建一个KNN分类模型。

6.预测结果:传入测试集数据,预测出来的结果跟实际的测试集结果和真实结果进行比较。

使用predict()方法将测试集X_test作为输入参数传入,该方法会基于已经训练好的KNN分类器,预测出每个测试样本的类别,并将预测结果存储在y_pred中。

7.计算准确率

使用accuracy_score()函数计算模型在测试集上的准确率。
 

  1. 训练阶段:将带有标签的样本数据集作为训练集,保存样本的特征和标签信息。
  2. 预测阶段:对于一个新的未知样本,计算它与训练集中所有已知样本之间的距离(通常使用欧氏距离或曼哈顿距离等)。根据距离最近的K个训练集样本的标签,确定未知样本的类别或预测值。
  3. 分类问题:对于分类问题,根据K个最近邻样本中出现次数最多的类别,将未知样本归类为该类别。
  4. 回归问题:对于回归问题,根据K个最近邻样本的平均值或加权平均值,预测未知样本的值。



    通俗点来说就是:计算待分类物体与其他物体之间的距离然后统计距离最近的 K 个邻居最后对于 K 个最近的邻居,它们属于哪个分类最多,待分类物体就属于哪⼀类。


    鸢尾花案例:
        1.鸢尾花数据集介绍:

    在sklearn库中,可以使用load_iris()函数加载鸢尾花数据集。该数据集包含了150个样本,每个样本代表了一个鸢尾花。每个样本有4个特征:萼片长度(sepal length)、萼片宽度(sepal width)、花瓣长度(petal length)和花瓣宽度(petal width),以及对应的鸢尾花种类信息。
    数据集中的鸢尾花样本被分为3个类别,每个类别代表了一种鸢尾花的品种。这3个类别分别是:
    山鸢尾(Setosa),用0表示
    变色鸢尾(Versicolor),用1表示
    维吉尼亚鸢尾(Virginica),用2表示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值