KNN算法及应用场景

这篇具有很好参考价值的文章主要介绍了KNN算法及应用场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是KNN算法,KNN算法主要的的应用场景是什么?

KNN算法(K-Nearest Neighbor Algorithm)是一种基本的机器学习算法,它可以用于分类和回归任务。

在KNN算法中,给定一个新的输入样本,通过计算其与已知数据集中每个样本之间的距离,找到与其最相似的K个样本,然后通过这K个样本的分类信息(对于分类问题)或者平均值(对于回归问题)来预测该输入样本的分类或者数值。

KNN算法的主要优点是简单易用、适用于多分类问题、适用于非线性分类问题等。然而,它的主要缺点是计算复杂度高,特别是当数据集很大时,计算距离需要较多的时间和计算资源。

KNN算法的应用场景包括图像识别、语音识别、文本分类、推荐系统等。例如,KNN算法可以用于图像分类问题,其中每个图像可以看作是一个输入样本,它的特征可以表示为图像的像素值。通过计算每个图像与已知的训练集中的图像之间的距离,可以找到与其最相似的K个图像,然后通过这K个图像的分类信息来预测该图像的分类。

什么是KNN(K近邻算法)?【知多少】_哔哩哔哩_bilibili

KNN和上次使用的线性回归有哪些不同? 

KNN和线性回归是两种不同的机器学习算法,它们在模型的构建和使用方法上有很大的差异:

模型类型:KNN是一种非参数模型,而线性回归是一种参数模型。

模型目标:KNN旨在通过寻找最近邻的样本来进行分类或回归预测,而线性回归旨在建立输入特征和目标变量之间的线性关系。

数据要求:KNN对数据的要求比较宽松,只需要样本具有可比性;而线性回归则要求样本符合线性关系。

计算方法:KNN算法需要计算新样本与每个训练样本之间的距离,然后找到最近的K个样本,对这K个样本进行加权求和或者多数表决来进行预测;而线性回归则是通过最小化目标变量与预测变量之间的误差平方和,来计算出回归系数和截距。

适用范围:KNN适用于多分类问题和非线性问题,如图像识别、文本分类等;而线性回归适用于连续数值预测问题,如房价预测、销售额预测等。

总之,KNN和线性回归是两种不同的机器学习算法,它们各有优缺点,适用于不同的场景和问题。在选择合适的算法时,需要考虑数据特征、模型要求和业务需求等多个因素。

利用KNN算法对橘子进行分类,Python代码实现

import numpy as np
from sklearn.neighbors import KNeighborsClassifier

# 定义训练数据
X_train = np.array([[1.2, 3.5], [1.4, 3.2], [1.3, 3.6], [1.5, 3.9], [1.7, 3.6], [1.8, 3.2]])
y_train = np.array(['Orange', 'Orange', 'Orange', 'Orange', 'Orange', 'Orange'])

# 定义测试数据
X_test = np.array([[1.6, 3.4], [1.5, 3.5], [1.3, 3.3], [1.2, 3.7], [1.7, 3.4]])

# 定义KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 拟合数据
knn.fit(X_train, y_train)

# 预测测试数据
y_pred = knn.predict(X_test)

# 打印预测结果
print(y_pred)

KNN算法及应用场景

在这个例子中,我们首先定义了一些训练数据和测试数据。训练数据包括6个橘子的特征(重量和直径),以及它们的分类标签(橘子)。测试数据包括5个橘子的特征,我们要使用KNN算法对这些橘子进行分类。

然后,我们定义了一个KNN分类器,并使用训练数据来拟合它。接着,我们使用KNN分类器对测试数据进行预测,并打印预测结果。在这个例子中,我们假设K值为3,也就是说,我们要找到距离测试数据最近的3个训练数据,并通过它们的分类标签来预测测试数据的分类。

请注意,这只是一个简单的示例,实际上,我们需要更多的训练数据和更多的特征来训练一个更准确的KNN分类器。

当然这个数据是写死的,当然我们从外界读取文件,我们只需要导入一个pandas库,然后引入读取即可

data = pd.read_csv('路径文件名',encoding='gbk')

 优化一下

import numpy as np
from sklearn.neighbors import KNeighborsClassifier

def main():
    # 定义训练数据
    X_train = np.array([[1.2, 3.5], [1.4, 3.2], [1.3, 3.6], [1.5, 3.9], [1.7, 3.6], [1.8, 3.2]])
    y_train = np.array(['Orange', 'Orange', 'Orange', 'Orange', 'Orange', 'Orange'])

    # 定义测试数据
    X_test = np.array([[1.6, 3.4], [1.5, 3.5], [1.3, 3.3], [1.2, 3.7], [1.7, 3.4]])

    # 定义KNN分类器
    knn = KNeighborsClassifier(n_neighbors=3)

    # 拟合数据
    knn.fit(X_train, y_train)

    # 预测测试数据
    y_pred = knn.predict(X_test)

    # 打印预测结果
    print(y_pred)

if __name__ == "__main__":
    main()

这样,我们就使代码更加紧凑和易读,并使用了函数将重复代码封装为一个函数,从而避免了重复输入。

再优化,用图表来展示

# 请参照实验思路完成实训内容

import numpy as np
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
def main():
    # 定义训练数据
    X_train = np.array([[1.2, 3.5], [1.4, 3.2], [1.3, 3.6], [1.5, 3.9], [1.7, 3.6], [1.8, 3.2]])
    y_train = np.array(['Orange', 'Orange', 'Orange', 'Orange', 'Orange', 'Orange'])

    # 定义测试数据
    X_test = np.array([[1.6, 3.4], [1.5, 3.5], [1.3, 3.3], [1.2, 3.7], [1.7, 3.4]])

    # 定义KNN分类器
    knn = KNeighborsClassifier(n_neighbors=3)

    # 拟合数据
    knn.fit(X_train, y_train)

    # 预测测试数据
    y_pred = knn.predict(X_test)

    # 打印预测结果
    print(y_pred)
    fig, ax = plt.subplots()
    colors = {'Orange': 'red', 'Blue': 'blue'}
    for i in range(len(X_test)):
        ax.scatter(X_test[i][0], X_test[i][1], c=colors[y_pred[i]], label=y_pred[i])
    ax.legend()
    plt.show()

if __name__ == "__main__":
    main()

这将创建一个新的窗口显示散点图。每个测试数据点都用一个点表示,并根据它们的预测类别用不同的颜色标记。

KNN算法及应用场景文章来源地址https://www.toymoban.com/news/detail-500568.html

到了这里,关于KNN算法及应用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 经典动态规划问题详解以及其主要应用场景

    ** 动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。。 动态规划最核心的思

    2024年02月10日
    浏览(30)
  • 【SQL Server】数据库开发指南(九)详细讲解 MS-SQL 触发器的的创建、修改、应用与适用场景

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月08日
    浏览(51)
  • 边缘计算技术主要有哪几种?如何应用在实际场景中?

    边缘计算是一种新的计算架构,它将计算资源移动到靠近终端用户的边缘设备中,以实现更快、更可靠、更安全的数据传输和处理。边缘AI智能则是指将人工智能算法和模型部署到边缘设备上,使其能够在设备本身上执行计算和决策,而不需要发送数据到云端进行处理。这种

    2024年02月11日
    浏览(36)
  • Kafka核心设计与实践原理:设计理念、基本概念、主要功能与应用场景

    详细介绍Kafka作为分布式流式处理平台的设计理念、基本概念,以及其主要功能与应用场景,包括消息系统、容错的持久化、流式处理平台等功能,同时探讨如何保证消息的唯一性、消费顺序等问题。

    2024年02月22日
    浏览(37)
  • K近邻算法(K-Nearest Neighbors, KNN)原理详解与应用

    K近邻算法(K-Nearest Neighbors, KNN)是一种常用的非参数化的监督学习算法,用于分类和回归任务。本文将深入解析KNN的原理,从距离度量到K值选择,帮助读者全面理解KNN的工作原理和应用。 KNN算法基于一个简单的思想:相似的样本具有相似的类别。它通过计算新样本与训练集

    2024年02月10日
    浏览(27)
  • 什么是计算机视觉,计算机视觉的主要任务及应用

    目录 1. 什么是计算机视觉 2. 计算机视觉的主要任务及应用 2.1 图像分类 2.1.1 图像分类的主要流程 2.2 目标检测 2.2.1 目标检测的主要流程 2.3 图像分割 2.3.1 图像分割的主要流程 2.4 人脸识别 2.4.1 人脸识别的主要流程 对于我们人类来说,要想认出身边的一个人,首先需要

    2024年02月11日
    浏览(34)
  • Python与OpenCV环境中,借助SIFT、单应性、KNN以及Ransac技术进行实现的图像拼接算法详细解析及应用

    一、引言 在当今数字化时代,图像处理技术的重要性不言而喻。它在无人驾驶、计算机视觉、人脸识别等领域发挥着关键作用。作为图像处理的一个重要部分,图像拼接算法是实现广阔视野图像的重要手段。今天我们将会讲解在Python和OpenCV环境下,如何使用SIFT、单应性、K

    2024年02月15日
    浏览(31)
  • 数仓实时场景下表行数估算不准确引起的的性能瓶颈问题案例

    本文分享自华为云社区《GaussDB(DWS)性能调优:实时场景下表行数估算不准确引起的的性能瓶颈问题案例》,作者: O泡果奶~。 本文针对实时场景下SQL语句因表行数估算不准确而导致语句执行超时报错的案例进行分析。 实时场景下,select查询语句执行时间过长,该语句verbose执

    2024年02月08日
    浏览(34)
  • 【Python】Lambda函数是什么,它的应用场景是什么?

    定义: Lambda函数也叫匿名函数,它是功能简单,只用一行代码就能实现的小型函数。 使用场景: Lambda函数没有名字,不用考虑函数名冲突问题;减少了代码行数,方便又简洁。 格式: lambda 参数[,参数] : 表达式 (例: lambda x,y : x + y ) 举例: 用lambda函数求出1到20中所有的

    2024年02月12日
    浏览(27)
  • chatGPT是什么?chatGPT有哪些应用场景

    ChatGPT是一个通过大规模预训练语言模型实现的对话生成系统,它是由OpenAI研发的。这个系统的核心技术是基于深度学习的自然语言处理技术——GPT(GenerativePre-trainedTransformer)模型。GPT模型采用了Transformer架构,可以从大规模语料库中无监督学习,具有强大的语言理解和生成

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包