• 数据挖掘学习——KNN(k-近邻)


    1.数据在不同维度上分布的分类表现

    鸢尾花数集(Iris)为例。

    Iris数据集如下(分别使用0、1、2表示山鸢尾、变色鸢尾和菖蒲锦葵):

    (可以看到Iris数据集一共有4个维度特征)

    Iris数据中不同种类鸢尾花的萼片长度和萼片宽度的样本分布:

     从图中可以发现,在萼片长度和萼片宽度这两个特征维度上,种类0与种类1、2有一定的辨识度,可以进行一个初步的分类,但是种类1和种类2仍旧无法分类。

    现在我们将Iris数据集放到3个数据维度中去看:

     可以看到此时三个种类出现了分层,此时我们可以对三个种类都进行分类。

    这就是数据在不同维度上分布的分类表现。

    2.KNN算法原理

    KNN是一种基于实例的学习,没有很复杂的数学推理,其分类过程是直接建立在对数据集进行分类的基础上,因此也称为将所有计算推迟到分类之后的惰性学习算法

    分类算法流程如下:

    (1)计算测试数据与训练数据特征值之间的距离

    (2)对距离按照规则进行排序(递增)

    (3)选取最近邻的k个数据进行分类决策(投票法)

    (4)预测测试数据的分类

    3.几种常见的距离计算方法

    (1)欧几里得距离

    (2)曼哈顿距离(计程车几何)

    (3)切比雪夫距离

    (4)闵可夫斯基距离

    4.kd树

    kd树是对数据点所在的k维空间进行划分的一种数据结构,主要应用于多维空间的关键数据搜索,本质上是一种平衡二叉树。

    在使用KNN算法对测试数据点进行分类时,需要计算测试数据点与训练样本集中每个数据点之间的距离,对距离进行排序,进而找出其中最近邻的k个样本数据。该方法的优势在于简单有效,但是当训练样本过大时,该方法的计算过程将比较耗时,为了提高KNN算法的搜索效率,减少距离计算的次数,通常采用k维(k-dimensional, kd)树方法

    5.KNN算法实战

    1. import numpy as np
    2. from sklearn.neighbors import KNeighborsClassifier
    3. from sklearn.neighbors import KDTree
    4. from sklearn import datasets
    5. from sklearn.model_selection import train_test_split
    6. iris=datasets.load_iris()
    7. data_train,data_test,target_train,target_test=train_test_split(iris.data,iris.target,test_size=0.3)
    8. # 定义一个KNN分类器对象,n_neighbors为k值,algorithm是算法
    9. knn=KNeighborsClassifier(n_neighbors=3,algorithm='kd_tree')
    10. knn.fit(data_train,target_train)
    11. # 把测试集的数据集传入即可得到模型的评分
    12. score=knn.score(data_test,target_test)
    13. # 预测给定样本数据对应的标签
    14. predict=knn.predict([[0.1,0.2,0.3,0.4]])
    15. print(score)
    16. print(predict)

      运行结果:

     

     

  • 相关阅读:
    计算机毕业设计ssm校园疫情防控系统jt87q系统+程序+源码+lw+远程部署
    【UnityShader入门精要学习笔记】第十七章 表面着色器
    IV implied volatility surf
    git commit --amend 修改最近一次提交的 commit message
    LL库实现正交编码器数据采集
    [机缘参悟-119] :一个IT人的反思:反者道之动;弱者,道之用 VS 恒者恒强,弱者恒弱的马太效应
    阿里云ECS服务器无法发送邮件问题解决方案
    大数据之LibrA数据库系统告警处理(ALM-12030 无合法license存在)
    投稿时要求注册ORCID,这张学术界身份证到底有哪些用处?
    Git使用教程
  • 原文地址:https://blog.csdn.net/weixin_52135595/article/details/126851568