如何在 Python 中实现 KNN 算法?2025年1月5日 | 阅读6分钟 引言在本教程中,我们将学习如何在 Python 中实现 KNN 算法。KNN 是一种简单的监督式机器学习 (ML) 算法。监督学习可用于分类或回归,并常用于缺失值填充。KNN 算法基于这样一个理念:一个给定数据点最近的观测值是数据集中“最相似”的观测值。因此,我们可以根据最近可用值的价值来对无法再次找到的点进行分类,用户可以通过选择 K 来选择算法中使用的附近观测值的数量。在这里,我们将向您展示如何在 Python 中使用 KNN 算法。 什么是监督学习?监督学习是机器学习 (ML) 的一部分。在这种学习类型中,我们在训练数据中想要预测的值以及我们想要学习的数据中的值被称为目标。数据集中的所有其他列都称为特征或独立变量预测因子或预测变量。监督学习分为两类,如下所示: 1. 分类 分类是监督学习的一部分。分类是寻找一个函数,该函数有助于根据不同类型的参数将数据集分组。在分类中,计算机从训练数据中进行训练,并根据该类别将数据分为不同的类别。 2. 回归 回归是监督学习的另一部分。回归是寻找因变量和自变量之间关系的过程。它有助于预测固定变量,例如预测市场趋势、房价等。 如何在监督学习中获得带标签的数据?在监督学习中有多种方法可以获得带标签的数据,如下所示:
在这里,我们使用 scikit-learn 包在 Python 中执行监督学习。我们还使用 TensorFlow、Keras 等其他一些包。 什么是 KNN 算法?KNN 算法的全称是 k-nearest neighbor 算法。该算法可以解决分类问题。k-最近邻或 KNN 算法在最初通过考虑数据分布来创建边界。当出现新数据时,算法会将其与最近的行进行匹配。因此,k 值越大,分离曲线越平滑,模型越复杂。然而,k 值越小,模型就越容易过拟合数据,模型也越容易。 分析数据集时,拥有一个 k 值对于防止数据集过拟合和欠拟合问题至关重要。通过使用 k-最近邻算法,我们可以拟合历史数据或训练模型,从而可以预测未来数据。 程序代码 现在,我们学习 Python 中 KNN 算法的程序代码。代码如下: 在上面的示例中,我们完成了一些特定的步骤。这些步骤将在下面讨论:
在这里,我们已经了解了如何使用 KNN 算法解决监督机器学习问题。现在,我们已经学习了如何使用 KNN 算法来衡量给定模型的准确性。 程序代码 现在,我们学习 Python 中 KNN 算法的程序代码,用于预测给定模型的准确性。代码如下: 我们如何为数据集决定正确的 K 值?此外,我们需要了解数据以获得所需 k 值的范围。但是要获得正确的 k 值,我们必须为每个所需的 k 值测试模型。为了清楚这一点,我们需要举个例子。 程序代码 现在,我们学习 Python 中 KNN 算法的程序代码,通过该代码我们可以为数据集决定正确的 K 值。代码如下: 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: ![]() 在上面的示例中,我们创建了一个图来显示具有高准确性的 k 值。此方法不用于在进程之间选择 n_neighbors 的正确值。相反,我们执行超参数调整来选择能提供最佳性能的值。 KNN 算法的局限性是什么?KNN 是一种易于学习的简单算法。它不依赖机器学习 (ML) 模型来生成预测。KNN 是一种分类器,只需要知道它需要处理多少个集群(一个或多个)。这意味着它可以在不知道有多少其他类别的情况下快速评估是否需要添加新类别。这种简单性的主要缺点是它无法预测不寻常的事情(如新疾病),而 KNN 无法做到这一点,因为它需要知道健康人群中稀有产品的数量。 此外,KNN 算法通过实验获得准确性。它是一种速度较慢且在时间和内存方面成本更高的算法。为了预测目的,需要内存来存储所有训练数据集。此外,由于欧几里得距离对幅度敏感,数据集中的幅度大的特征比幅度小的特征更重要。这些是 KNN 或 k-nearest neighbour 算法的局限性。 结论因此,通过本教程,我们正在学习如何在 Python 中实现 KNN 算法。在这里,我们学习了机器学习 (ML) 的一部分——监督学习。在对监督学习有了基本了解之后,我们探索了 k-nearest neighbor 算法或 KNN 算法来解决监督机器学习问题。我们还检查了模型的准确性。在这里,我们还学习了如何为数据集决定正确的 K 值。我们分享了这个概念的程序代码以及该代码的输出。 |
Python中的“requests”包通常用于创建HTTP请求。它提供了一种简单且有吸引力的方式来与在线服务和API接口。Session对象是“requests”库最强大的功能之一。Session对象允许您保存...
阅读 4 分钟
简介:在本教程中,我们将学习如何在 Python 中解压一个元组列表。Python 是一种众所周知的编程语言,在全球范围内用于多种目的,如机器学习、Web 开发和数据科学,并支持许多不同的过程。元组是一种有用的...
阅读9分钟
强化学习是机器学习的基本子领域之一。它主要应用于行动层面,意味着在特定奖励的参考下,在给定情况下要采取的最佳行动。他们使用它来确定适当的行动或……
阅读9分钟
? ISO 8601 是一种表示日期和时间的国际标准。它规定了日期的格式为 YYYY-MM-DD,并且可以选择包含时间和时区偏移量。在 Python 中,您可以使用 datetime 轻松获取 ISO 8601 格式的当前日期和时间...
阅读 3 分钟
当我们必须将树数据结构存储在文件中时,会使用序列化过程。之后我们可以根据需要恢复此树。唯一的条件是树的结构应该保持不变。反序列化是完整的...
7 分钟阅读
? 简介:Python 是一种通用且功能强大的编程语言,为各种任务提供了大量的工具和库。数据处理和分析中的一个常见场景是需要从文件夹中读取多个文本文件。无论您是从事自然语言处理、数据...
阅读 4 分钟
Python 是一种高级、解释型编程语言,以其简洁性和可读性而闻名。Python 由 Guido van Rossum 创建,并于 1991 年首次发布,它以其清晰简洁的语法强调代码清晰度,使其易于新手使用并受到经验丰富的开发者的喜爱。它的...
阅读 4 分钟
Python 是一种高级的解释型编程语言,以其清晰和简洁而闻名。它由 Guido van Rossum 创建,并于 1991 年首次发布,通过大量使用空白来强调代码的清晰度。Python 支持多种编程范式,包括...
7 分钟阅读
Daft 是一个基于 Python 的开源分布式查询引擎,旨在有效处理海量数据集。它使工程师能够以 SQL 或 Python 等高级语言构建查询,然后对这些查询进行优化并在分布式计算资源(例如计算机集群)上执行。Daft ...
阅读 3 分钟
到目前为止,我们已经在 Python 中执行了各种列表操作。在本文中,我们将学习如何交换列表中的元素。但首先,让我们了解一下交换的含义?交换是一个过程,其中两个变量交换……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India