• AI学习指南机器学习篇-KNN基本原理


    AI学习指南机器学习篇-KNN基本原理

    机器学习是当今技术领域的热门话题,而KNN(K-Nearest Neighbors)算法作为机器学习领域中最简单、最直观的算法之一,被广泛应用在分类和回归预测问题中。本篇博客将详细介绍KNN算法的基本原理,包括如何进行分类和回归预测,以及距离度量方法的详细解释。同时,我们将通过具体示例来说明KNN算法的应用和实现过程。

    KNN算法的基本原理

    KNN算法是一种基于实例的学习(instance-based learning)方法,它不像其他算法那样需要进行显式的模型训练,而是采用基于实例的记忆方式,在分类或回归预测时根据与待预测实例最相似的已知实例进行预测。

    KNN分类

    在KNN分类中,给定一个用于分类的数据集,当新的实例到来时,KNN算法会在数据集中找到与该实例最相似的k个实例,然后基于这k个实例的类别来决定新实例属于哪一类。通常采用多数表决的方式来确定新实例的类别。

    KNN回归预测

    在KNN回归预测中,与KNN分类类似,KNN算法会找到与待预测实例最相似的k个实例,然后基于这k个实例的数值来预测新实例的数值。通常采用这k个实例的平均值或加权平均值来作为新实例的预测值。

    距离度量方法

    KNN算法中最关键的部分是如何计算实例之间的相似度,常用的方法之一就是距离度量。常见的距离度量方法包括欧氏距离、曼哈顿距离和闵可夫斯基距离。

    欧氏距离

    欧氏距离是最常用的距离度量方法之一,它对应于我们通常理解的两点之间的直线距离,计算公式如下:

    d(p, q) = √((p1-q1)^2 + (p2-q2)^2 + ... + (pn-qn)^2)
    

    其中 p 和 q 分别表示两个实例的特征向量,n 表示特征的维度。

    曼哈顿距离

    曼哈顿距离又称为城市街区距离,它计算的是在城市中从一个十字路口到另一个十字路口的距离,计算公式如下:

    d(p, q) = |p1-q1| + |p2-q2| + ... + |pn-qn|
    

    闵可夫斯基距离

    闵可夫斯基距离是欧氏距离和曼哈顿距离的一般化表示,可以根据参数p的不同取值得到不同的距离度量方法。当p=2时,闵可夫斯基距离等同于欧氏距离;当p=1时,闵可夫斯基距离等同于曼哈顿距离。

    d(p, q) = (∑(i=1 to n) |pi-qi|^p)^(1/p)
    

    示例

    下面我们通过一个简单的示例来说明KNN算法的应用和实现过程。假设我们有一个包含一些样本的数据集,每个样本包括两个特征和一个类别标签,我们希望对新实例进行分类。

    import numpy as np
    
    # 生成示例数据集
    X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
    y = np.array([0, 0, 1, 1, 1])
    
    # 定义KNN分类函数
    def knn_classify(new_instance, X, y, k):
        distances = np.sqrt(np.sum((X - new_instance) ** 2, axis=1))
        nearest_indices = np.argsort(distances)[:k]
        nearest_labels = y[nearest_indices]
        unique, counts = np.unique(nearest_labels, return_counts=True)
        label = unique[np.argmax(counts)]
        return label
    
    # 对新实例进行分类预测
    new_instance = np.array([2.5, 3.5])
    predicted_label = knn_classify(new_instance, X, y, k=3)
    
    print("预测标签:", predicted_label)
    

    在上面的示例中,我们通过自定义的KNN分类函数来对新实例进行分类预测。首先计算新实例与数据集中每个实例的距离,然后找到距离最近的k个实例,最后采用多数表决的方式确定新实例的类别标签。

    结语

    本篇博客详细介绍了KNN算法的基本原理,包括分类和回归预测,以及常用的距离度量方法,并通过具体示例来说明KNN算法的应用和实现过程。希望读者通过本篇博客能够更加深入地理解KNN算法,并在实际问题中灵活运用。

  • 相关阅读:
    OSCP系列靶场-Esay-Moneybox保姆级
    webpack打包一个文件,做了哪些事情
    第三章互联网
    HC32L110小华半导体SWD模式切换的问题
    经典文献阅读之--lris(优于Scan Context的回环检测)
    一、Linux 入门、VM 与 Linux 的安装
    计算机中的第二个伟大发明(JMP/JMPR)
    计算机行业已经进入寒冬?云计算帮你解决就业难题!
    mysql主从
    TwinCAT3安装教程
  • 原文地址:https://blog.csdn.net/zhaopeng_yu/article/details/138927619