机器学习--1.KNN机器学习入门

news2025/2/4 16:32:45

1、机器学习概述

1.1、什么是机器学习

机器学习(Machine Learning)是人工智能(Artificial Intelligence)领域的一个子集,它主要关注如何让计算机系统通过经验学习(数据)并自动改进性能。机器学习算法可以让计算机从数据中学习模式和规律,而无需显式编程。这些算法能够根据输入数据不断改进自身,以便在新数据上做出更好预测或决策

1.2、机器学习的应用

机器学习可以应用于多个领域,解决各种问题,以下是一些常见的应用:

  1. 预测和分析:例如预测股票价格、房价、销售额等。

  2. 图像识别:例如车牌识别、人脸识别和目标检测。

  3. 自然语言处理:例如机器翻译、情感分析、语音识别和自动生成文本摘要。

  4. 推荐系统:例如为用户推荐电影、音乐或商品。

  5. 游戏AI:例如为电子游戏设计更具挑战性和逼真的对手。

  6. 医疗诊断:例如预测疾病风险、辅助诊断和制定治疗计划。

  7. 金融风险评估:例如信用评分、欺诈检测和保险定价。

  8. 自动驾驶:例如环境感知、路径规划和决策。

  9. 无人机技术:例如自主导航、目标检测和避障。

  10. 机器人技术:例如自主行走、抓取物体和与人互动。

等等等等 ……

1.3、机器学习的前景

机器学习作为人工智能的核心技术,在近年来得到了迅速发展,为人类社会各个方面带来了巨大的影响和潜力。,机器学习将在很多领域发挥重要作用,为人类创造更美好的生活

  1. 智能化生活:随着机器学习技术的发展,人们的日常生活将变得更加便捷和智能。无论是家居、医疗、交通还是购物,机器学习都将为我们提供更加个性化和高效的服务。

  2. 产业革新:机器学习将推动各行各业的技术革新,使得传统产业实现数字化、智能化转型。这将有助于提高生产效率,降低成本,提高产品质量和创新能力。

  3. 科学研究:在科学研究领域,机器学习将协助人类挖掘更多知识,加速科学发现的速度。无论是在基础科学还是应用科学,机器学习都将发挥重要作用。

  4. 社会公平:通过机器学习技术,可以实现更公平的资源分配和服务提供。例如,在教育领域,机器学习有望实现教育资源的普及和个性化,让更多人受益,教育会实现个性化定制,让每个学生都能得到最适合自己的学习方法和进度 。

  5. 可持续发展:机器学习将在环境保护和气候变化等领域发挥关键作用。通过预测和分析,机器学习将有助于我们更好地应对全球性挑战,实现可持续发展。

  6. 跨学科融合:机器学习将与其他学科相互融合,推动新兴领域的发展。例如,生物学、物理学、经济学等领域都将受益于机器学习技术的应用。

  7. 良性人机互动:随着机器学习技术的进步,人工智能将能更好地理解和适应人类的需求,实现人机协同,提高工作效率和生活品质。

讲解


各位朋友们大家好,欢迎你和我一起学习机器学习。

那么迄今为止呢,咱们人类历史上一共发生了4次工业革命。第一次呢就是蒸汽机;第二次呢就是以电力和石油内燃机为基础的应用;第三次工业革命呢,我们也把它叫做数字革命,出现了计算机技术、互联网和信息通信。那么现在呢,我们正在经历第4次工业革命,这次工业革命呢,以人工智能、物联网、大数据、机器学习、机器人技术等先进技术为核心。

好,那么首先呢,我要对你进行恭喜一下,恭喜你有勇气来拥抱最新的技术,送给你一句话叫做“代码点亮人生,思维改变世界”。好,那么接下来呢,我们一起来提升自己,希望能够让你有更大的价值。

好,那么我们对于咱们这个课程呢,首先来进行一个机器学习的概述,我们会从三个方面进行大概的一个介绍:什么是机器学习,机器学习它现在有哪些应用,还有就是机器学习的一个前景。

机器学习叫machine learning,翻译成中文就是机器学习,它是人工智能领域的一个子集,主要关注的就是如何让计算机系统通过经验学习。你看人的学习呢,都是根据经验来进行总结。你看咱们人类历史上有这么多的好书,这些都是古人的智慧和经验,我们读了这些书,就可以知天下事。常言道“要知天下事,多读古人书”。那么计算机呢,发展到现在,它也可以通过经验学习。就是我们给它提供数据,它可以自动改进性能。机器学习算法可以让计算机从数据中学习规律和模式,而无需显示编程

什么是显示编程呢?就是说我们写了代码,告诉计算机让它帮我们做什么就做什么,这叫显示编程,就是一行一行地教给它。那么这个规律和模式,就是提炼出来的经验和总结,计算机就可以根据这个经验和总结进行任务完成。比如实现图片识别,你拿着身份证去坐火车,刷一下身份证,它识别出是你就放行通过。这些算法能够根据输入数据不断进行改进,以便在新数据上做出更好的预测和决策。

让我们今天来看一下机器学习的应用。机器学习已经在多个领域进行了应用,它解决了各种各样的问题。咱们在这儿就能看到预测和分析,比如股票、房价、销售额,还有图像识别、自然语言处理等等。比较火热的有自动驾驶、无人机技术、医疗诊断。比如在医疗诊断领域,有皮肤病的诊断、病原体的检测,还有药物研发,现在都结合了机器学习、深度学习。有了这些算法,它可以帮助我们预测药物分子的活性、毒性,还有药代动力学特点,从而加速新药的研发过程。所以你现在就能看到机器学习的应用,已经在我们生活的方方面面都进行了应用。现在很多城市的家庭都有智能锁,不需要带钥匙,刷脸就能开门。我们生活当中,比如点美团外卖,外卖小哥接到订单,他的路径该如何走,这就涉及到路线规划。还有推荐系统,在淘宝上、今日头条上,你购买的商品,还有你看的这些视频,它会根据你过往的购买记录,还有你在今日头条上看到过的这些视频、新闻为你进行量身定制。你有没有发现今日头条上你看到的新闻之后,第二天它给你推荐的都是合你胃口的新闻,所以这就是推荐系统。机器学习已经应用在多个领域了。其实我们现在生活在这个世界,就是被机器学习、被代码驱动着的,让我们的生活更加便利。

好,那这是现在咱们的一个状况,接下来呢,我们继续看。它会在各个方面对我们生活进行改进,让我们的生活更加美好。我们接下来一起看一下机器学习的前景:智能化的生活、产业的革新、科学研究、社会公平、可持续发展、跨学科的融合、良性的人机互动。那我们在里边就说两点:一个是社会公平,我们知道教育资源不公平,分布不均匀,北京的教育肯定比偏远山区的教育要好很多。那么有了人工智能的进步,我们可以让更多人受益,实现个性化的定制,让每个学生都能得到最适合他的方法、合适的速度,这最有利于他的成长。还有就是跨学科的融合。在这儿呢,我给你举一个例子,中国有一个非常著名的科学家,她叫颜宁。颜宁博士从美国回到中国,她做的是分子生物学研究,也就是她使用她的专业知识,要测定蛋白质的结构。以前地球上最顶尖的科学家,十几万人,他们花了几十年的时间预测出了几十万个蛋白质分子的结构。然而今年,DeepMind深度学习机构开发出了一个叫AlphaFold的模型,它专门用于预测蛋白质的结构,两年时间它预测出了2亿个蛋白质的结构,准确率相当高。你看这就是跨学科融合的应用,深度学习还可以帮助我们做研究,你说神奇不神奇?这不就应了咱们刚才送给大家那句话吗?叫做“代码点亮人生,思维改变世界”。

好,那么这就是机器学习的概述。经过咱们这一小节的介绍,你会对机器学习有一个大概的了解。好,那么咱们下面的课程呢,我们会对本章章节进行一个介绍。



2、本章节概述

2.1、如何学习

学习机器学习入门(掌握KNN算法)可以分为以下几个步骤

  1. 理论基础:首先要了解KNN算法的基本原理和概念,包括监督学习、分类与回归任务、距离度量、k值选择等。

  2. 编程实现:使用Python这种语言实现KNN算法。可以从简单的距离度量和分类任务开始,逐步探索权重设置、特征缩放等高级功能。参考开源代码库和实例代码,如Scikit-learn库,有助于加深理解。

  3. 实际应用:通过实践来提高KNN算法的应用能力。选择一个实际问题,如图像识别或推荐系统等,使用KNN算法构建模型并进行性能评估。在实际应用中,注意数据预处理、特征选择、模型调优等关键环节。

通过以上步骤,可以逐步学会KNN算法并在实际工作中应用。记住,学习是一个持续的过程,要不断积累经验和知识,努力提高自己的能力。

2.2、敲黑板划重点

KNN(k-Nearest Neighbors)算法是一种简单而有效的监督学习方法,适用于分类和回归任务。下面是关于KNN算法的重点总结:

  1. 距离度量:KNN算法需要计算数据点之间的距离,常用的距离度量方法有欧氏距离、曼哈顿距离和余弦相似度等。选择合适的距离度量对算法性能有很大影响。

  2. 参数k的选择:k值的选取对KNN算法的性能至关重要。较小的k值容易导致过拟合,模型复杂度较高;较大的k值可能导致欠拟合,模型复杂度较低。通常通过交叉验证等方法确定最佳k值。

  3. 权重设置:KNN算法可以为不同邻居设置不同的权重,例如距离倒数权重。这样可以使距离较近的邻居对结果影响更大,提高预测准确性。

  4. 特征缩放:由于KNN算法基于距离进行计算,因此特征缩放非常重要。将不同尺度的特征统一到相同的范围,如[0,1]区间,可以防止某些特征对距离计算的主导作用。

通过以上几点总结,可以更好地理解KNN算法的原理和关键注意事项,从而在实际应用中取得更好的效果。

2.3、学以致用

KNN(k-Nearest Neighbors)算法是一种基本监督学习方法,主要用于分类和回归任务。在工作中,KNN算法可以应用于多个场景,包括但不限于以下几种:

  1. 图像识别:KNN可以应用于图像识别任务,如手写数字识别。通过将图像表示为特征向量(如像素值),可以计算图像之间的相似度并进行分类。

  2. 异常检测:KNN可以用于异常检测,通过计算数据点之间的距离,找出距离较远的点,从而识别异常数据。

  3. 客户细分:在营销和销售领域,KNN可以用于客户细分,通过计算客户之间的相似度,将相似客户分组,为不同客户群体提供个性化的营销策略。

  4. 推荐系统:KNN可以用于构建协同过滤推荐系统,通过计算用户或物品之间的相似度,为用户推荐相似用户喜欢的物品或与已购物品相似的物品。

  5. 预测模型:KNN算法可以用于回归任务,通过计算近邻数据点的目标值的加权平均值,预测新数据点的目标值。

这些应用场景仅仅是KNN算法在工作中的一部分,实际应用中,KNN算法可能需要与其他机器学习方法和技术结合,以实现更高效和准确的结果。

讲解


哈喽,各位朋友们。大家好,接下来呢,我们看一下咱们机器学习入门这一章节,我们该如何学习,咱们画画重点以及我们学会了这一章节的知识点之后,在我们的工作当中,它有什么样的一个应用?

好,那么咱们首先看一下咱们该如何学习这一章节的内容呢?之前呢,咱们都了解过 Python 的语法,我们知道 Python 该如何应用,我们也知道用 Python 如何来进行数据分析,那这个呢,应该是我们第一次接触机器学习。那么在机器学习当中呢,最简单的一个入门算法就叫做 KNN 算法。那么我们掌握了这个算法,对于我们后续进行机器学习会有非常大的一个帮助。那么现在的问题是,我们该如何学习 KNN 这个算法呢?咱们呢,从以下三个步骤来进行层层递进,第一个呢,就是理论学习,那我们首先要了解这个算法的基本原理和概念。什么是 KNN 呢?你看它有三个字母,这三个字母都是大写,以后你见到这种写法,那它肯定是 3 个英语单词的首字母。KNN 呢,等我们去介绍 KNN 算法原理的时候,咱们再进行说明。那理论基础呢,就包含监督学习、分类与回归任务、距离的度量、K 值的选择。那 K 呢,你看就是 KNN 当中的这个 K,那我们在具体介绍这个算法的时候,咱们再展开。

第二点呢,就是编程实现。那我们有了理论是不是啊?那最重要的呢,就是“千言万语不如两横一竖”,咱们就代码开干。我们需要使用代码来实现 KNN 这个算法。咱们可以从简单的距离度量分类任务开始,然后逐步探索权重的设置、特征的缩放等高级功能。所以说在编程实现这一块呢,我们需要知道一些技巧,我们需要知道如何能够让我们分类更加精准。那咱们在这个阶段呢,我们会参考开源的代码库和实例代码,比如 scikit-learn,这是一个非常经典的库。我们熟练使用这个库,有助于加深理解 KNN 算法的基础理论,就是你对它进行了使用,反过来呢,也会让你对于基本概念和基本原理有一个更进一步的理解。

那么有了这个编程实现之后呢,第三点就是实际应用,这就是我们的实战。咱们通过实践来提高 KNN 算法的应用能力,选择一个实际的问题,比如说图像识别、推荐系统,这些都是我们生活当中的真实问题呀。咱们使用 KNN 这个算法模型来进行解决实际问题。这样的话,咱们就可以对数据进行模型的构建,看一下机器学习到底是如何工作的。那么有了这个学习流程,这个就是:管中窥豹,可见一斑。在以后你进行其他机器学习算法学习的过程当中,流程都是一样的,算法可能会不同。给你举一个例子,你现在学会开车了,对吧?你第一辆车买的是夏利,等你学会了编程,挣到了大钱,到时候你买奔驰宝马,你想这是不是一样开呀?不同的算法,这就相当于不同的汽车一样。你只要掌握了其中一种汽车该如何开,那么其他的汽车开法都大同小异。通过以上的步骤,我们就可以逐步学会 KNN 算法,并且在实际的工作当中进行应用。这个地方大家要谨记,学习是一个持续的过程,我们要不断积累经验和知识,努力提高自己的能力。我们经常说“键盘敲烂,月薪过万”,其实就是你跟着我一起学习机器学习的过程当中,多写代码,这样的话,你才能够将原理进行更深的理解。当你自己遇到真实的问题,工作当中遇到问题的时候,你才能够信手拈来。

好,那么接下来咱们敲黑板画重点,咱们学习 KNN 算法,我们需要注意什么呢?这个算法是一个入门算法,它简单而有效,可以在工作当中派上用场。它是一个监督学习算法,用于分类和回归任务。下面我们看一下 KNN 算法的重点总结。第一个就是距离度量,我们得知道距离度量使用什么样的公式。欧式距离是最常用的,中学的时候咱们就算过两点之间的距离。这个概念呢,我们会在具体讲解算法的时候有一个延伸,会有更多的距离度量标准。还有呢,就是 K 值的选择。KNN 叫 K 近邻算法,这里边涉及到“邻”,就是邻居。K 值的选择代表邻居的选择,这个数量大小会影响算法的性能、权重的设置呢,“近朱者赤,近墨者黑”,离你最近的人对你的影响肯定比千里之外不认识的人对你的影响要大多了。我们 KNN 算法有哪些参数,我们可以设置一下,让不同邻居的权重有所不同。这就是权重设置,这个是算法当中的细节。对于本章节概述的时候呢,大家先有一个概念,等我们具体学习的时候,你再返回来,你有一个方向。

接下来呢,就是特征的缩放。这个属于我们 KNN 算法当中高级的一些处理和应用。因为我们刚才说到 KNN 算法是基于距离进行计算的,对吧?既然基于距离进行计算,那么我们所给的数据肯定有大有小,因为度量衡不一样。所以说特征的缩放是咱们 KNN 算法当中的一个重点,我们会在具体的代码操作当中进行详细解释和对比。通过以上几点的总结,你就可以更好地理解 KNN 算法的原理和关键注意事项,从而在实际当中取得更好的结果。

好,那接下来咱们看一下它的实际应用,学以致用。我们看看学了 KNN 算法,在工作当中到底能够把它应用在什么样的领域。第一个就是图像识别,比如手写数字识别。银行卡上面有数字,现在你打开 APP,让你输入银行卡,有的时候拍个照片就能够识别,不需要手动输入。还有异常检测,异常值比如特别大特别小的值,比如姚明的身高在整个人群当中就属于异常值。还有客户细分,在营销和销售领域,我们对不同的客户分门别类进行精细化管理,这会对你公司的整体营收有很大的帮助。还有推荐系统,根据不同的人推荐不同的他喜欢的商品,这也会带来更高的收益。还有模型的预测,预测模型用于回归,比如股票的预测,销售额预测等。这些应用场景仅仅是 KNN 算法在工作当中的部分应用。在实际应用当中,KNN 算法可能需要与其他机器学习的方法和技术进行结合,以实现更高效和准确的结果。任何单一的算法模型都不能解决真实生活当中的复杂问题,其实都是一个结合。就像你不可能只学数学,也不可能只学英语,所有的知识点都要学习,学算法也一样。那么这就是我们本章节机器学习入门的一个概述。有了这些概述,我们就带着这些要点,真正进入这一章 KNN 算法的具体学习了。


3、KNN算法原理

3.1、有监督学习

有监督学习(Supervised Learning)是机器学习中最常见的一种方法。在有监督学习中,训练数据集包括输入特征和对应的目标标签(或称为输出)。通过学习输入特征与目标标签之间的映射关系,模型可以对新的、未知的输入数据进行预测

有监督学习主要可以分为两大类:

  1. 分类(Classification):目标标签是离散的类别。例如,根据电子邮件的内容判断是否为垃圾邮件,或者根据手写数字图像识别对应的数字。

  2. 回归(Regression):目标标签是连续的数值。例如,预测房价、股票价格或者销售额等。

有监督学习的一般过程如下:

  1. 收集数据:收集包含输入特征和对应目标标签的训练数据集。

  2. 数据预处理:对数据进行清洗、缺失值处理、特征工程等操作,以便更好地进行模型训练。

  3. 选择模型:根据问题类型和数据特点,选择合适的算法或模型。

  4. 训练模型:使用训练数据集来训练模型,使模型学会输入特征与目标标签之间的映射关系。

  5. 评估模型:使用验证集或测试集来评估模型的性能,如准确率、召回率、F1 分数等。

  6. 调整参数:根据评估结果调整模型的参数或结构,以优化模型性能。

  7. 预测新数据:应用训练好的模型对新的、未知的输入数据进行预测。

监督学习应用场景:图像识别、语音识别、自然语言处理、金融风控、推荐系统、医疗诊断……

3.2、无监督学习

无监督学习(Unsupervised Learning)是机器学习的一种方法,与有监督学习不同,无监督学习的训练数据集包含输入特征,而没有对应的目标标签。无监督学习的目标是通过分析数据的内在结构、模式和关系来发现数据的潜在知识。由于无监督学习不依赖于标签数据,它在处理未标记或者标签成本较高的数据时具有优势。

无监督学习主要分为两大类

  1. 聚类(Clustering):将相似的数据点分组到同一个簇(cluster)中。聚类分析旨在发现数据集中的内在结构和分布。常见的聚类算法包括 K-means、DBSCAN、层次聚类等。

  2. 降维(Dimensionality Reduction):将高维数据投影到低维空间,同时尽量保留数据的原始信息。降维可以用于数据可视化特征提取去除冗余信息减少计算复杂度等。常见的降维算法包括主成分分析(PCA)、线性判别分析(LDA)、t-分布邻域嵌入算法(t-SNE)等。

无监督学习应用场景:聚类分析、降维、异常检测、关联规则学习……

监督学习和无监督学习在实际应用中往往会结合使用。例如,在文本分类任务中,可以使用无监督学习方法(如主题模型)对文本进行聚类,发现潜在主题,然后利用监督学习方法(如逻辑回归、支持向量机等)进行分类

讲解


哈喽,各位朋友们,大家好,我们一起学好机器学习,学好编程,让我们的职业生涯得以起飞。

好,接下来呢,我们一起看一下 KNN 这个算法。接下来,我们介绍一下 KNN 算法的原理,这是机器学习的一个入门内容。在入门这块,我们首先看一下什么是有监督学习,什么是无监督学习。其实,在我们个人成长的过程中,咱们大部分都是有监督学习。我给你举个例子,你经历过高考,这一段经历让你终生难忘。你在学习的过程中,题目做错了,老师会告诉你错在哪儿,下一次考试的时候,你就会朝着正确的方向一点点改进,从而分数就会一点点提高。这就是有监督学习。你还记得吗?在你上高中的时候,是不是很多学霸都为自己准备了错题本?还吃一堑长一智?

我们看一下机器学习中的有监督学习表示什么。有监督学习是机器学习中非常常见的一种方法。在有监督学习中,训练数据集包括输入特征和对应的目标标签。这个目标标签就相当于是我们的答案。大家看我给你标记一下,重点的地方咱们重点画一下。比如说输入特征,这就相当于是有特征,我们根据特征来判断它的结果,目标标签我们就可以称之为输出。我们学机器学习,它就相当于是什么?我们给电脑输入一个 X,然后电脑经过判断给我们输出一个 Y。这里的输入特征就是所说的 X,目标标签就对应着我们的 Y。通过学习输入特征与目标标签之间的映射关系,有了这个映射关系,我们的模型、算法就可以对新的未知输入数据进行预测了。这就是它神奇的地方。

接下来,我们继续往下看。有监督学习主要可以分为两大类:一个是分类,另一种是回归。什么是分类呢?我们生活中有很多例子。举一个例子,比如男和女,这难道不是分类吗?我们把它叫做离散的,你要么是男,要么是女,泾渭分明。比如我们的电子邮件,判断它是否为垃圾邮件,你要么是,要么否。再比如手写的数字,判断它到底是 0 还是 7。什么是回归呢?我们的目标是连续值,比如要预测的房价、股票价格或销售额,这些都叫回归。

我们介绍了有监督学习,那有监督学习在机器学习中的步骤是什么样的呢?一般情况下,第一步是收集数据,就是我们上面所说的 X,也就是它的特征。第二步是数据预处理,我们对数据进行清洗、缺失值处理、特征工程等操作,以便更好地进行模型的训练。之前我们学习过 Pandas 等工具,我们使用这些工具来进行处理。接下来是选择模型,我们根据问题的类型、数据特点,选择合适的算法。后面我们会学习更多的算法模型,模型和模型之间方便的话,等我们学会了、掌握了算法的核心,就可以根据数据的特征进行选择。

接下来第四步是训练模型。在 KNN 这里,我们会有一个演示映射关系,通过训练,我们可以将输入特征和目标标签之间建立这样一个关系。接下来是评估模型。后面我们学习任何算法,都得对模型进行评估。训练完之后,我们得知道最后的结果到底好不好,得有一个验收。模型的评估由准确率、召回率、F1 分值等专业的评价指标来进行评估。后面我们学到具体的指标时再做介绍。

还有就是第六步,调整参数。我们希望模型能达到更好的效果,所以可以调参,把参数微调一下,让性能达到最好。就像你新买了一辆车,是不是得调试一下?是不是得跑到高速公路上跑一跑,拉伸一下,它的性能才会展现出来?算法也是,我们得对模型中的参数进行调整。第七步是预测新数据。预测新数据就是模型的应用。新数据就是模型在训练过程中没见过的,但又来了一个新用户,我们使用模型对这个新用户进行预测,这就是模型的应用。

那么有监督学习主要应用在哪些场景呢?大家看,图像识别、语音识别、自然语言处理、金融风控、推荐系统、医疗诊断,方方面面它应用得都非常广泛。

介绍完什么是有监督学习,接下来我们一起来看一下什么是无监督学习。无监督学习就是自学、无师自通。我们看一下它具体的定义是什么。与有监督学习不同,无监督学习的训练数据仅包含输入特征,大家注意,这个时候没有目标值。有了目标值才叫监督,这是正确答案。无监督学习的目标是什么?它是通过分析数据的内在结构模式和关系,来发现数据潜在的知识结构。由于无监督学习不依赖于标签数据,它在处理未标记或者标签成本较高的数据时,有很大的优势。我们可以通过无监督学习,把一群数据大概进行分类,数据和数据之间有特征的相关性。

无监督学习主要分为两大类。在这里,我们先讲概念,后面的无监督学习的应用,比如聚类、降维,我们都会有讲解。大家先有这样一个概念。什么是聚类呢?它就是将相似的数据点分到同一簇当中。你看,距离近,就把你分到一个组当中。我们常见的一些聚类算法,后面我们会学习 k-means、DBSCAN、层次聚类等。

无监督学习的另一个应用场景是降维。把高维的数据投影到低维空间,同时尽量保留数据的原始信息。老师介绍的时候,术语可能比较多,你可以这样理解:把数据由多变少,但不损失原始信息。降维有什么好处呢?它可以用于数据可视化、特征提取、去除冗余信息、减少计算复杂度,这些都是它的优点。后面我们要学习的降维算法包含主成分分析、线性判别分析、t 分布随机邻域嵌入算法等。

刚才我们看了有监督学习的应用场景,无监督学习的应用场景包括聚类分析、降维、异常检测、关联规则学习等。在这些场景中,无监督学习都有它自己的应用。监督学习和无监督学习在实际应用中往往是结合使用的。例如,在文本分类任务中,比如新闻分类,我们可以使用无监督学习方法对文本进行聚类。你想,每天产生的新闻特别多,几十万上百万篇,如果人为标记,成本特别高。这个时候怎么办?我们就使用算法,把相同类别的新闻划归到一类。能用机器干的,咱就用机器干,这样成本最低。所以在这种文本分类任务中,我们先使用无监督学习对它进行聚类,把相同的划分到一组,发现潜在的主题。这个时候就需要人为介入了,然后利用监督学习方法,比如逻辑回归、支持向量机等,后面我们都会学到,再进行分类。这就是监督学习和无监督学习的结合。在真正的开发中,有监督学习的应用范围更多一些,这是大家需要了解的。有监督学习和无监督学习的概念,我们就介绍到这里。今天我们所要讲的 KNN 算法,它属于典型的有监督学习。


3.3、KNN算法是什么?

KNN(K-Nearest Neighbors K-最近邻)算法是一种基于实例的监督学习方法,常用于分类和回归任务。该算法的基本原理是根据最近邻的训练样本来预测未知样本的属性。KNN算法的核心思想是“物以类聚,人以群分”; 近朱者赤,近墨者黑 ,即相似的对象具有相似的属性。 KNN 算法根据数据点之间的距离来决定它们属于哪个类别。

这其实和我们在日常生活中评价一个人的方法是一样的,如果你想要知道一个人是怎么样的,那就去找和他关系好【“距离”近】的几个人看看对他的评价或者看和他关系好的人是什么样子的,就可以大致判断出他是什么样的人了。

KNN算法的主要步骤如下:

  1. 计算待分类样本与训练样本集中每个样本之间的距离。距离的计算可以使用欧氏距离曼哈顿距离等度量方法。

  2. 对计算出的距离进行排序,选出距离最近的K个训练样本。

  3. 对于分类任务,统计这K个训练样本中每个类别的样本数量,将数量最多的类别作为待分类样本的预测类别。对于回归任务,计算这K个训练样本的属性值的平均值,作为待分类样本的预测属性值

KNN算法的优点在于简单直观,适用于解决多分类问题。但算法的缺点也很明显:计算量大,因为每个待分类样本都需要与训练样本集中的每个样本计算距离;另外,K值的选择对模型性能影响较大。

讲解

3.4、KNN过程实现

KNN(K-Nearest Neighbors)算法是一种基于实例的学习方法,用于分类和回归任务。下面我们详细介绍KNN算法的实现过程:

  1. 数据准备:首先,需要收集并准备数据集。数据集应包含特征向量(用于描述数据的属性)和类别标签(仅用于分类任务)。对于回归任务,数据集应包含特征向量和连续的目标值。此外,还需要对数据进行预处理,例如缺失值处理、归一化和特征选择等。

  2. 距离度量:选择一个合适的距离度量方法来计算待分类样本与训练样本集中每个样本之间的距离。常用的距离度量方法有欧氏距离、曼哈顿距离和余弦相似度等。

  3. 确定最近邻:对计算出的距离进行排序,选出距离最近的K个训练样本。K是一个用户定义的参数,需要根据实际情况进行调整。通常情况下,较小的K值会使模型更复杂,而较大的K值会使模型更简单。K值的选择对模型性能有很大影响,可以通过交叉验证等方法进行优化。

  4. 决策规则:根据最近邻样本的类别标签(分类任务)或目标值(回归任务)来预测待分类样本的属性。

    • 分类任务:统计K个最近邻样本中每个类别的数量,并将数量最多的类别作为待分类样本的预测类别。在处理多分类问题时,可以使用投票法(例如加权投票法)来确定预测类别。

    • 回归任务:计算K个最近邻样本的目标值的平均值或中位数,作为待分类样本的预测目标值

  5. 评估性能:使用测试集评估KNN模型的性能。对于分类任务,可以使用准确率、召回率、F1分数等指标;对于回归任务,可以使用均方误差(MSE)、均方根误差(RMSE)等指标。根据性能评估结果,可能需要调整K值或预处理方法,以优化模型性能。

  6. 应用模型:当模型性能达到满意水平时,可以将其应用于实际问题,预测未知样本的属性。

需要注意的是,由于KNN算法计算量较大,对大型数据集的处理效率较低。在实际应用中,数据量不能过大。具体来说,KNN 可以处理从几十到几千甚至更多的数据点。然而,如果数据量达到数十万或数百万,KNN 的性能可能会受到影响。 对于大型数据集,KNN 算法可能不是最佳选择。数据量大时,可以考虑使用其他算法,如决策树、支持向量机、神经网络等(后续课程会讲到)。这些算法在训练时可能需要更多的计算,但在预测阶段往往更高效。

在KNN算法中,较大的K值会使模型更简单。这是因为较大的K值会考虑更多的邻居来决定新数据点的类别,这会导致决策边界更加平滑,而不是非常不规则和碎片化。

较小的K值(如K=1或2)会使模型更复杂,因为它只考虑最近的一个或两个邻居来决定新数据点的类别。这可能导致模型对训练数据中的噪声异常值过于敏感,从而导致过拟合现象。

总之,在KNN算法中,较大的K值使模型更简单,而较小的K值使模型更复杂。为了避免过拟合或欠拟合,通常需要通过交叉验证等方法选择一个合适的K值来平衡模型复杂度。

讲解


Hello,各位小伙伴们大家好,接下来呢,我们继续学习,一起看一下 KNN 这个算法的具体实现过程。这个算法是一种基于实例的学习方法,实例就是咱们的数据,它用于分类和回归。

下面咱们具体看一下 KNN 算法的实现过程。首先就是数据准备。你进入一个公司,这个公司在发展的过程中肯定会有很多数据的沉淀。这些数据咱们不能让它石沉大海,必须让它发光发热,产生价值。所以说,咱们需要对这些数据进行整理。根据公司的业务,具体来看这些数据到底该如何处理。我们得需要抽取数据的特征,比如对于一个人而言,我们可以获取他的身高、体重、年龄、心率、血压等等,然后它的类别标签,我们可以判断这个人到底健康不健康,是不是属于亚健康,这就是它的标签。如果要是回归任务呢,比如他的身高,10 岁的时候是不是对应了一个身高,10 岁半的时候又对应了一个身高,这就是回归。一般情况下,回归可以预测房价,房价是一个波动的,咱们还可以预测股票,或者是预测公司的销售情况。

第二点呢,就是距离的度量。因为 KNN 是根据最近的距离来判断的,那么数据之间的距离远近怎么来度量呢?咱们可以使用欧式距离、曼哈顿距离和余弦相似度等等这些数学概念,这些都对应着具体的公式,后面我们讲到距离度量的时候再具体展开。接下来就是确定最近邻。咱们说 K 个邻居,那到底是 3 个还是 5 个呢?这个也有一个评价指标,咱们可以选择最合适的。

那接下来咱们看一下决策规则。KNN 是一个算法,那我们是如何使用这个算法的呢?分两种情况:一种是分类,另一种是回归。我们看一下分类,怎么确定一个新的数据它的类别呢?我们统计 K 最近邻样本中每个类别的数量,并将数量最多的类别作为待分类样本的预测值。现在你就能看到是不是还是人多力量大,还是根据投票的方式来决定我们的结果。那我们看一下回归,回归和分类是类似的。回归的话,我们计算的是平均值或中位数。平均值比较容易理解,把这个平均值作为我们待分类样本的预测目标值。

接下来第 5 步就是评估性能。你进行了分类、回归,还得对结果负责。对于咱们这个模型到底好不好,得给它一个打分。对于分类任务,我们可以使用准确率、召回率、F1 分数等指标,这些都有具体的公式,等我们应用的时候再具体展开。对于回归任务,我们可以使用均方误差(MSE)或者均方根误差(RMSE)来对它进行评估。

好,接下来咱们看一下模型的应用。当咱们的模型满足咱们的条件,达到满意的水平,那么咱们就可以用它来解决实际的问题了,预测未知样本的属性。你在公司里边,公司花钱雇我们,我们进行建模,最后其实希望这些数据能够产生实际的价值。

咱们刚才说到确定最近邻这儿,邻居不同,你得到的结果就不一样。举个例子,现在大家能够看到,我们有一个白色的点,那我就问一下这个白色的点它应该属于哪个类别呢?在我们这个图当中,这是一个动图,它一共有两种类别,一个是红色的,另一个是浅绿色的。你看这个 K 是在发生变化,这个圈是不是越来越大?当这个圈越来越大的时候,咱们所找的邻居是不是就变多了?你看,当 K=1 的时候,它是不是绿色的?K=3 的时候,你看是不是两个绿的一个红?K=5 的时候,大家看,动图能够给我们呈现一个动画的效果。当 K=5 的时候,我们截个图,这个时候你看是不是红色的占多数?所以说当 K=5 的时候,这个点应该是红色的。

不同的 K 值取值不同,结果就会有差异。这就是为什么咱们上面说到确定最近邻 K 的个数是有讲究的。当你看到这个动图,把这个动图看明白了,你就知道 KNN 是怎么进行类别划分的。

需要注意的是,由于 KNN 算法计算量比较大,对于大型数据集的处理效率就会低一些。在实际应用中,数据量不能过大。具体来说,KNN 可以处理从几十到几千甚至更多的数据点,然而如果数据量达到数十万、数百万,那 KNN 的性能就会受到严重影响。所以对于大型数据集,KNN 算法不是最佳选择。数据量大时,我们可以考虑后续学到的其他算法,比如决策树、支持向量机、神经网络等等。这些算法在训练的时候可能会有更多的计算,但在预测阶段往往更加高效。

在 KNN 算法中,较大的 K 值会使模型更简单,因为较大的 K 值会考虑更多的邻居来决定新数据点的类别,这可能导致决策边界更加平滑,而不是非常不规则或碎片化。所以较大的 K 值会使模型更简单。较小的 K 值会使模型更复杂,因为它只考虑最近的一个或两个邻居来决定新数据点的类别,这可能导致模型对训练集中的噪声或异常点过于敏感,从而导致过拟合的现象。过拟合就是你只对老师讲过的题目都会,一旦遇到新题就不行了。所以较小的 K 值会使模型更复杂。

最后咱们总结一下,总之在 KNN 算法当中,较大的 K 值会使模型更简单,较小的 K 值使模型更复杂。为了避免过拟合或欠拟合,通常我们需要交叉验证,使用这样的方法来选择一个合适的 K 值来平衡模型的复杂度。这个我们会在后面的课程当中进行代码实战。

好,那我们这一小节的内容就先到这里。下一小节,我们继续介绍距离的度量。


3.5、距离度量

3.5.1、欧式距离距离

欧几里得距离(Euclidean distance):也称为 L2 距离,是计算两点间直线距离的常用方法。欧几里得距离适用于连续型数据。

3.5.2、曼哈顿距离

曼哈顿距离(Manhattan distance),也称为 L1 距离、城市街区距离或者出租车距离,是一个用于计算两点之间距离的度量方法。曼哈顿距离的名称来源于纽约市曼哈顿区的街道布局,因为在这种网格状布局的街道上行走时,只能沿着水平垂直方向前进。

曼哈顿距离在计算复杂度上较,并且在某些情况下比欧几里得距离(直线距离)更适用。例如,在机器学习和数据挖掘领域,曼哈顿距离通常用于度量具有多个属性的数据点之间的相似性

3.5.3、其他(了解)

切比雪夫距离(Chebyshev distance):是一个度量无限规格空间中两点之间的距离的方法。切比雪夫距离等于两点间各坐标差的最大值。

国际象棋中与国王的移动方式密切相关。在国际象棋中,国王可以沿着水平垂直对角线方向移动一格。这意味着,国王在棋盘上从一个位置移动到另一个位置所需的最少步数等于这两个位置之间的切比雪夫距离

余弦相似度(Cosine similarity):通过计算两个向量之间的夹角余弦值来衡量它们的相似性。余弦相似度通常用于文本分析推荐系统

相关系数(Correlation coefficient):如 Pearson 相关系数,用于衡量两个连续型变量之间的线性关系

讲解

3.6、KNN总结升华

  • 步骤

    • 计算目标距离所有点的距离

    • 找最近的 K 个“邻居”

    • 根据邻居的属性、类别投票做出预测

  • 优点

    • 易懂、易学、易上手

    • 适用性广泛

    • 对噪声数据不敏感:KNN 算法在多数情况下对噪声数据不敏感,因为它基于多个最近邻样本的投票或加权平均来进行预测。

  • 缺点

    • 计算复杂度高:KNN 算法需要计算待预测点与所有训练数据点之间的距离,计算复杂度较高,特别是在大数据集上。

    • 存储需求高:KNN 算法需要存储整个训练数据集,这可能导致存储需求较大。

    • 无法处理具有不同尺度的特征:当特征的尺度差异较大时,KNN 算法可能无法很好地处理。

讲解

4、KNN算法应用

4.1、分类

4.1.1、数据介绍

  • 案例介绍,鸢尾花分类

  • 气候不同,造就性状不同,统计了鸢尾花的关键特征数据:花萼长度、花萼宽度、花瓣长度、花瓣宽度。

  • 植物学家划分为:

    • setosa(中文名:山鸢尾)

    • versicolor(中文名:杂色鸢尾)

    • virginica(中文名:弗吉尼亚鸢尾)

  • 鸢尾花数据集中每个样本包含4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),用于对鸢尾花进行分类。

4.1.2、KNN算法建模

  • 加载数据

  • 数据预处理,拆分

  • 声明算法,给定超参数 k

  • 训练算法,拟合数据,归纳规律

  • 算法应用,样本预测

4.1.3、KNN算法优化

  • 在上个代码基础上,进行交叉验证获取最佳K值

交叉验证(Cross Validation)是一种在机器学习中广泛使用的模型评估参数调优方法。在训练模型时,我们通常将数据集划分为训练集测试集,其中训练集用于训练模型,测试集用于评估模型的性能。但是这种方法可能会受到数据集划分方式的影响,导致评估结果不稳定交叉验证通过对数据集进行多次划分和多次评估,可以更可靠地评估模型性能。

交叉验证的常见方法是K折交叉验证(K-Fold Cross Validation)。其步骤如下:

  1. 将数据集随机分成K个互不重叠的子集,每个子集称为一个“折”。

  2. 对于每个折,执行以下操作:

    a. 将当前折作为验证集,其余的折作为训练集。

    b. 使用训练集训练模型。

    c. 使用验证集评估模型性能(如计算分类准确率、均方误差等指标)。

  3. 计算K次迭代中模型性能指标的平均值,作为模型最终的评估结果。

交叉验证的优点如下:

  1. 降低模型评估结果的方差:通过多次评估模型,交叉验证可以提供更稳定更可靠的性能评估。

  2. 更充分地利用数据:交叉验证可以确保每个样本都被用于训练和验证,使得模型学习和评估更为全面

在算法调优中,交叉验证可以帮助我们找到最佳的超参数(如KNN中的K值)。我们可以尝试不同的超参数组合,使用交叉验证评估每个组合的性能,最后选择性能最佳的组合。这种方法可以有效地防止过拟合,提高模型在新数据上的泛化性能。

4.2、回归

4.2.1、数据介绍

  • 波士顿房价

波士顿房价数据集(Boston Housing Dataset)是一个经典的用于回归分析的数据集。它包含了波士顿地区506个街区的房价信息以及与房价相关的13个特征。这个数据集的目标是根据这些特征来预测波士顿地区房屋的中位数价格(以千美元为单位)。

以下是这个数据集的13个特征变量

  1. CRIM:城镇人均犯罪率

  2. ZN:占地面积超过25,000平方英尺的住宅用地比例

  3. INDUS:城镇中非零售业务占地比例

  4. CHAS:是否靠近查尔斯河(Charles River);1表示靠近,0表示远离

  5. NOX:环保指数,一氧化氮浓度(以千万分之一为单位)

  6. RM:每个住宅的平均房间数

  7. AGE:1940年以前建成的自住房屋的年龄比例

  8. DIS:到波士顿五个就业中心的加权距离

  9. RAD:径向公路可达性指数

  10. TAX:每一万美元的全价值财产税率

  11. PTRATIO:城镇师生比例

  12. B:计算公式为 $1000*(Bk - 0.63)^2$,其中Bk表示城镇中黑人比例

  13. LSTAT:较低社会阶层的百分比

目标变量

  • MEDV:房屋的中位数价格,以千美元为单位

这个数据集常用于回归分析的学习和实践,例如线性回归、决策树回归、支持向量机回归和KNN回归等。通过分析这些特征与房价之间的关系,可以帮助我们更好地理解房价的影响因素。

4.2.2、KNN回归建模

  • 加载数据

  • 数据拆分

  • 交叉验证筛选最佳参数

  • 模型评估预测

import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error

# 加载Boston房价数据集
boston = load_boston()
X = boston.data
y = boston.target

# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# k值、weights权重、p表示距离度量:欧式距离、曼哈顿距离
k = [1,3,5,7,9,15,17,23,30]
weights = ['uniform', 'distance']
p = [1,2]

params = dict(n_neighbors = k,weights = weights,p = p)

estimator = KNeighborsRegressor()

gCV = GridSearchCV(estimator,params,cv = 5,scoring = 'neg_mean_squared_error')
gCV.fit(X_train,y_train)

# 输出最佳参数
print("Best parameters: ", gCV.best_params_)

# 使用最优参数的K值创建KNN回归模型
best_knn = gCV.best_estimator_

# 使用测试集进行预测
y_pred = best_knn.predict(X_test)

# 计算预测结果的均方误差(Mean Squared Error)
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error: ", mse)

5、KNN算法实战

5.1、图像识别【实战案例】

讲解

5.2、健康医疗【实战案例】

讲解

5.3、人力资源【实战案例】

"Adults" 数据集是一个经典的机器学习数据集,用于分类任务。 该数据集基于1994年美国人口普查的数据,包含来自美国人口普查局的个人收入数据,旨在预测一个人的收入是否高于50K美元/年。该数据集由多个特征(包括年龄、教育程度、婚姻状况、职业等)组成,其中一些特征是连续值,另一些类别值。

字段中文说明
age年龄被调查者的年龄。它是一个连续值特征
workclass工作类型工作类型是被调查者的雇佣类型
final_weight权重数值型数据,指定一个人在人口普查中所代表的人口数量
education学历学历是被调查者的教育水平
education_num受教育年数是被调查者接受教育的年数
marital_status婚姻状况被调查者的婚姻状况
occupation职业调查者的工作职业
relationship家庭关系家庭关系是被调查者和家庭成员之间的关系
race种族被调查者的种族
sex性别性别
capital_gain资本收益是指个人在一段时间内从投资或者资产出售中获取的利润
capital_loss资本损失是指个人在一段时间内因投资或者资产出售而产生的亏损
hours_per_week工作时长每周工作时长,数值型数据
native_country原生国家原生国家
salary薪资表示一个人的年收入是否高于50K美元,包括 <=50K 和 >50K 两种分类。

KNN算法建模:

  • 数据处理,字符串类型数据---->数值型数据

  • 空数据删除

  • 异常值删除

  • 模型调优

导包数据加载

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder, MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 加载数据集
data = pd.read_csv('adults.txt')
display(data.head(),data.shape)

数据预处理

# 空数据过滤
data = data.replace('?', np.nan).dropna().reset_index(drop=True)
# 异常值过滤
data = data[(data['capital_gain'] != 99999) & (data['capital_loss'] != 4356)]
# 数据预处理
le = LabelEncoder()
columns = ['workclass','education','marital_status',
           'occupation','relationship','race','sex','native_country']
for col in columns:
    data[col] = le.fit_transform(data[col])
# 特征归一化
col_norm = ['age','final_weight', 'workclass', 'education_num', 'capital_gain', 
            'capital_loss', 'hours_per_week']
scaler = MinMaxScaler()
data[col_norm] = scaler.fit_transform(data[col_norm])
display(data.shape,data.shape)

数据拆分

# 划分数据集
X = data.drop('salary', axis=1)
y = data['salary']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

算法建模

# 训练KNN模型
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
# # 预测和评估
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

模型调优

%%time
knn = KNeighborsClassifier()
# 超参数调优
params = {'n_neighbors': [3,5,7,9,15,23,29,35], 'weights': ['uniform', 'distance'],'p': [1,2]}
grid_search = GridSearchCV(knn, params, cv=5)
grid_search.fit(X_train, y_train)
knn_best = grid_search.best_estimator_
# 计算模型准确率
y_pred = knn_best.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)

讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2291879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Adaptive LLM Transformer²

看到了一个不错的论文https://arxiv.org/pdf/2501.06252 TRANSFORMER-SQUARED: SELF-ADAPTIVE LLMS 挺有意思的&#xff0c;是一家日本AI公司SakanaAI的论文&#xff08;我以前写过他们的不训练提升模型的能力的文章&#xff0c;感兴趣可以去翻&#xff09;它家有Lion Jones坐镇…

基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决

在使用 LabVIEW 通过 Modbus-RTU 协议与工业设备进行通信时&#xff0c;可能遇到无法正常发送或接收指令的问题。常见原因包括协议参数配置错误、硬件连接问题、数据帧格式不正确等。本文以某 RGBW 控制器调光失败为例&#xff0c;提出了一种通用的排查思路&#xff0c;帮助开发…

直方图:摄影中的视觉数据指南

目录 一、直方图基础&#xff1a;揭开它的神秘面纱 二、解读直方图类型&#xff1a;亮度与色彩的密码 &#xff08;一&#xff09;亮度直方图 &#xff08;二&#xff09;RGB 直方图 三、拍摄中巧用直方图&#xff1a;优化曝光与效果 &#xff08;一&#xff09;精准判断曝…

IM 即时通讯系统-51-MPush开源实时消息推送系统

IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术&#xff0c;提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…

【Linux】从硬件到软件了解进程

个人主页~ 从硬件到软件了解进程 一、冯诺依曼体系结构二、操作系统三、操作系统进程管理1、概念2、PCB和task_struct3、查看进程4、通过系统调用fork创建进程&#xff08;1&#xff09;简述&#xff08;2&#xff09;系统调用生成子进程的过程〇提出问题①fork函数②父子进程关…

2024-我的学习成长之路

因为热爱&#xff0c;无畏山海

Kamailio 不通过 dmq 实现注册复制功能

春节期间找到一篇文章&#xff0c;需要 fg 才能看到&#xff1a; https://medium.com/tumalevich/kamailio-registration-replication-without-dmq-65e225f9a8a7 kamailio1 192.168.56.115 kamailio2 192.168.56.116 kamailio3 192.168.56.117 route[HANDLE_REPLICATION] {i…

大模型系列21-AI聊天机器人

聊天机器人 背景机器学习基础监督学习&#xff08;Supervised Learning&#xff09;概念应用场景主要问题 无监督学习&#xff08;Unsupervised Learning&#xff09;概念常见方法应用场景 强化学习&#xff08;Reinforcement Learning&#xff09;概念关键要素应用场景 模型优…

25.2.3 【洛谷】作为栈的复习不错(学习记录)

今天学习的东西不算多&#xff0c;放了一个星期假&#xff0c;感觉不少东西都没那么清楚&#xff0c;得复习一下才行。今天搞个栈题写&#xff0c;把栈复习一下&#xff0c;明天进入正轨&#xff0c;边复习边学习新东西&#xff0c;应该会有二叉树的学习等等... 【洛谷】P1449 …

Android开发工作经历整理

一.无人机应用软件开发 集成大疆官网的DJIMobileSDK到AS中编写软件&#xff0c;操控无人机执行多个航点任务。集成OpenCV库进行图像识别&#xff0c;通过获取参数&#xff0c;根据算法执行sdk&#xff0c;使无人机降落到机库&#xff0c;并执行后续的换电操作。待无人机就绪后…

C++中常用的十大排序方法之4——希尔排序

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C中常用的排序方法之4——希尔排序的相…

自动驾驶---两轮自行车的自主导航

1 背景 无人驾驶汽车最早出现在DARPA的比赛中&#xff0c;从那个时刻开始&#xff0c;逐渐引起全球学者的注意&#xff0c;于是从上个世纪开始各大高校院所开始了无人汽车的研发。直到这两年&#xff0c;无人驾驶汽车才开始走进寻常百姓家&#xff0c;虽然目前市面上的乘用车还…

四、GPIO中断实现按键功能

4.1 GPIO简介 输入输出&#xff08;I/O&#xff09;是一个非常重要的概念。I/O泛指所有类型的输入输出端口&#xff0c;包括单向的端口如逻辑门电路的输入输出管脚和双向的GPIO端口。而GPIO&#xff08;General-Purpose Input/Output&#xff09;则是一个常见的术语&#xff0c…

PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践

title: PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践 date: 2025/1/28 updated: 2025/1/28 author: cmdragon excerpt: 在数据库管理中,备份与恢复是确保数据安全和业务连续性的关键措施。PostgreSQL 提供了一系列工具,以便于数据库管理员对数据进行…

自主Shell命令行解释器

什么是命令行 我们一直使用的"ls","cd","pwd","mkdir"等命令&#xff0c;都是在命令行上输入的&#xff0c;我们之前对于命令行的理解&#xff1a; 命令行是干啥的&#xff1f;是为我们做命令行解释的。 命令行这个东西实际上是我们…

XCCL、NCCL、HCCL通信库

XCCL提供的基本能力 XCCL提供的基本能力 不同的XCCL 针对不同的网络拓扑&#xff0c;实现的是不同的优化算法的&#xff08;不同CCL库最大的区别就是这&#xff09; 不同CCL库还会根据自己的硬件、系统&#xff0c;在底层上面对一些相对应的改动&#xff1b; 但是对上的API接口…

【Redis】安装配置Redis超详细教程 / Linux版

Linux安装配置Redis超详细教程 安装redis依赖安装redis启动redis停止redisredis.conf常见配置设置redis为后台启动修改redis监听地址设置工作目录修改密码监听的端口号数据库数量设置redis最大内存设置日志文件设置redis开机自动启动 学习视频&#xff1a;黑马程序员Redis入门到…

【大数据技术】教程05:本机DataGrip远程连接虚拟机MySQL/Hive

本机DataGrip远程连接虚拟机MySQL/Hive datagrip-2024.3.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso写在前面 本文主要介绍如何使用本机的DataGrip连接虚拟机的MySQL数据库和Hive数据库,提高编程效率。 安装DataGrip 请按照以下步骤安装DataGrip软…

springboot 启动原理

目标&#xff1a; SpringBootApplication注解认识了解SpringBoot的启动流程 了解SpringFactoriesLoader对META-INF/spring.factories的反射加载认识AutoConfigurationImportSelector这个ImportSelector starter的认识和使用 目录 SpringBoot 启动原理SpringBootApplication 注…

llama.cpp GGUF 模型格式

llama.cpp GGUF 模型格式 1. Specification1.1. GGUF Naming Convention (命名规则)1.1.1. Validating Above Naming Convention 1.2. File Structure 2. Standardized key-value pairs2.1. General2.1.1. Required2.1.2. General metadata2.1.3. Source metadata 2.2. LLM2.2.…