机器学习算法——常规算法,在同的业务场景也需要使用不同的算法(一)

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:机器学习

🅰

请添加图片描述


文章目录

    • 🅰
    • 前言
    • 🎶<font color=green > 算法分类/font>
      • (1)K近邻
        • 1.基本概要
        • 2.算法推导
        • 3.工程实现
      • (2)朴素贝叶斯
        • 1.基本概要
        • 2.算法推导
        • 3.工程实现
        • 结束语🥇


前言

  机器学习可以处理的业务场景非常丰富,从基础的回归、聚类和分类等场景到图片识别、语音识别和文本分析等。不同的业务场景也需要使用不同的算法,所以如果想对机器学习在业务的解决方案上有一定认识,则需要掌握多种场景的不同种类的算法,了解不同算法的属性、优势和缺陷,对之后的算法应用会有很大的帮助。


🎶 算法分类/font>


  分类算法是用来解决分类问题的算法,关于场景的抽象方法在前面章节中已经介绍了,分类算法是场景最丰富的一类算法,广告的投放和疾病预测等都可以抽象成分类问题。分类算法一般都是监督学习算法,因为需要通过已有的打标数据来生成分类模型。在这一部分选取了几种比较典型的分类算法进行介绍,分别是K近邻(KNN)、朴素贝叶斯(NBM)、逻辑回归(LR)(注:这里LR作为二分类算法,LR也是回归算法的一种)、随机森林(RF)和线性支持向量机(SVM)。

(1)K近邻

  很多人在刚接触机器学习算法的时候,都会觉得这些算法很难理解,有很多公式需要记、需要推导,为了防止大家对学习机器学习算法的学习产生抗拒心理,我们先从最简单的算法(K近邻)入手学习。K近邻算法主要解决的是分类问题,而且原理非常好理解,只要有一点数学基础,差不多用20分钟就可以进行推导,稍微有一些代码能力的话,半个小时就可以实现一版简单的K近邻程序。下面具体来看一下K近邻。

1.基本概要

  K 近邻(K-Nearest Neighbor,KNN)是一种非常简单的机器学习算法,主要用来解决分类问题,KNN 是监督学习分类算法,在分类前需要有打标数据。从字面意思来理解,KNN 是一种 LazyLearning(也可称为“惰性学习”,可理解为考虑问题的最简化情况)模式的算法,因为它的分类只考虑距离目标点最临近的K个点的类别,具体是怎么实现的呢?我们通过引用 KNN 在维基百科中的一张图(见图 1)来讲解。
在这里插入图片描述

  图 1表示在二维空间中的一个分类场景,三角形和正方形的图形代表已经打标过的两种数据的分布,打问号的圆形数据是我们需要进行分类的预测对象。首先在算法推导前需要先设置K值。
  1)当 K=3 时,我们找出距离预测集,也就是圆形数据最近的3个数据,这3个数据中有2个三角形、1个正方形。所以圆形数据会被分到跟三角形数据一类,因为在 K=3 的半径区间中三角形的数量占优。
  2)当 K=5 时,找出距离圆形数据最近的5个数据点,分别是3个正方形和2个三角形,那么预测点会被分到属于正方形的这一类。
  通过上面的这个例子我们可以了解到,K值对预测对象的最终预测结果的影响是很大的。K值取得太小可能会造成参与评估的样本集太小,结果没有说服力;K值取得过大,会把距离目标队列距离过远的一些噪音数据也考虑进去,造成结果的不准确性。所以在实际的算法使用过程中,需要对K这个参数进行反复的调试,才可以达到一个比较理想的效果。
  下面来了解 KNN 算法的一些特性。首先,KNN 不同于其他一些算法的地方是 KNN不光可以解决Z分类场景的问题,同时也可以解决多分类的问题,因为无论需要分类的目标列有几种可能,KNN 只考虑与目标的距离最近的下个点的集合中哪个类别的点数量最占优势。另外,因为 KNN 的原理和实现都较为简单,所以后期调优过程中的工作量相对来讲比较小。KINN 比较大的问题就是对样本分布比例不均衡的情况可能会造成结果的不准确性,如图 2所示。
  在上面的这个二维空间中,正方形和六边形表示已经打标好的数据集,我们需要对五角星进行分类。通过上图的数据分布,从距离的角度直观来看,五角星应该属于正方形这一类,因为五角星的周围都是正方形。但是由于整个数据集的分布不平衡,六边形的数量远多于正方形的数量,所以当 K=9 或者更大的时候,预测集会被错误分类。所以 KNN 在目标数据集数量比例分布不平衡的情况下,可能会造成预测结果的不准确。KNN 的另外一个问题就是计算成本很高,因为每个预测点都需要对全量数据集进行一次距离的计算和排序,这样就会造成非常大的计算资源开销。上面我们介绍了 KNN的一些基本概念和特性,下面来看一下具体的算法推导过程。
在这里插入图片描述

2.算法推导

  通过上面的介绍,我们可以了解到 KNN 的算法原理,下面来看具体的推导过程。
  1)因为 KNN 是监督学习,所以首先要加载打标好的数据集(多分类或者二分类数据),然后需要设定一个K值。
  2)在预测的过程中,需要针对每一个预测对象计算它与所有数据集的距离,这个距离的计算一般通过求欧式距离来实现,欧式距离可以描述两点在n维空间的真实距离(物理距离 )。求解方法比较简单,已知两个n维向量 x=(x,x,x,…,x„)和 y=(yyy…,y),那
么这两个向量的欧式距离公式可以表示为
在这里插入图片描述
将结果进行排序,选取跟预测数据距离最近的K个点组成决策集合
  在决策集中,比较各个类别数据点的个数,选取个数最多的类别作为预测数据点的最终类别。
  整个 KNN的推导过程比较简单,主要涉及距离计算和排序两个功能点。这里只是针对最简单的 KNN 情况进行介绍,具体的实现可以有很多的优化方式,如可以在计算前先排除掉与预测集数据距离较大的一些噪音点,从而提高计算效率。

3.工程实现

上面介绍了整个算法的推导,现在看一下如何通过工程来实现KNN。

import math
import operator
def euclideanDistance(inst1,inst2,length):distance =0for x in range(length):distance +=pow((instl[x]-inst2[x]),2)return math.sqrt(distance)def getNeighbors(trainingSet,testInstance,k):distances =[]length=len(testInstance)-1for x in range(len(trainingSet)):dist=euclideanDistance(testInstance, trainingSet[x], length)distances.append((trainingSet[x],dist))
distances.sort(key=operator.itemgetter(1))neighbors =[]for xin range(k):neighbors.append(distances[x][0])return neighborsdef getResponse(neighbors):classVotes ={}for x in range(len(neighbors)):response = neighbors[x][-1]if response in classVotes:classVotes[response]+=1else:classVotes[response]=1sortedVotes=sorted(classVotes.iteritems(),key= operator.itemgetter (1).reverse=True)return sortedVotes[0][0]

  使用的 Python 版本为 Python 2.7,这里引入了Python的numpy和operator 两个库.
下面看一下代码中几个函数的输入和输出。

  • euclideanDistance:这个函数主要是求两个向量的欧式距离,输入的3个参数分别是向量 1、向量2和向量的维度。
  • getNeighbors:在数据集中找到所需要预测数据的 K个最临近点并返回,输入的3
    个参数分别是数据集、预测集以及K值。
  • getResponse:返回对目标值的预测结果,输入的是 getNeighbors 函数的返回值。
    下面通过一个实例,来看看上面代码的运行结果。输入打标好的数据集:

trainset =〔[1,1,1,‘a’],[2,2,2,‘a’],[1,1,3,‘a’],[4,4,4,‘b’], [0,0.0,"a”,[4,4.5,4,‘b’]]

  trainSet 是一个4维数据集,最后一个字段是目标列,一共有6个点,分为a和b两种类别。预测集是 testInstance=[5,5,5]。
  把这两组数据带入上面的函数中可得

def main():trainset =[[1,1,1,'a'],[2,2,2,'a',[1,1,3,'a'],[4,4,4,'b'],[0,0,0,'a’],[4,4.5,4,'b']]
testInstance =[5,5,5]
k=5neighbors =getNeighbors(trainSet, testInstance,k)response =getResponse(neighbors)print "\nNeighbors Are:",print (neighbors)print "\nResponse is:",print repr(response)

以上介绍了 KNN 的算法原理以及推导,并且通过 Python 代码进行了实现。KNN 作为最简单的机器学习算法比较适合新手入门了解。KNIN 算法在文本分类和图像分类等场景有许多的应用,常常作为业务场景下的重要分类模块来使用。如果想对 KNN 有更深刻的了解,请查看相关资料并且通过大数据集进行实验。

(2)朴素贝叶斯

  如果你是一个计算机相关专业毕业的学生,那么一定听说过贝叶斯这个人。贝叶斯(Bayes)定理是由英国数学家贝叶斯发明的,用来描述两个条件概率的关系。朴素贝叶斯是贝叶斯定理的简单实现,是常见的一种利用先验概率进行分类的分类器。朴素贝叶斯的基础建立在一个假设条件之上,即所有特征的条件之间相互独立。下面来详细介绍下朴素贝叶斯分类算法。

1.基本概要

  朴素贝叶斯模型(Naive Bayesian Mode,NBM)作为以条件概率为基础的分类器,是一种监督学习算法,常被用于文本分类和垃圾邮件过滤等场景中。为了更好地帮助大家理解员叶斯理论,下面摘选一段维基百科上的介绍。贝叶斯理论解决的是逆向概率问题。设一个袋子里有N个白球,M个黑球,计算从这个袋子摸出黑球的概率是很容易的,这是~个正向概率求解的问题。但是如果我们把问题反过来,如果我们事先不知道袋子里有多少个黑球、多少个白球,我们摸一个球出来,通过所摸出球的颜色对袋子里的黑白球比例进行推测,这就是逆向概率问题。贝叶斯定理主要是通过已知的正向概率求解逆向概率
  下面来了解贝叶斯理论是如何应用到实际的分类场景中去的。朴素贝叶斯分类是一种机器学习的监督学习算法,监督学习意味着我们已经有了一份打标好的数据作为训练样本,可以把训练样本的数据分为两类,特征列和目标列。特征列表示的是那些特征字段的数据,目标列是打标字段。贝叶斯理论在分类场景中解决的问题就是:当我们已知目标列和特征列各自分布的概率情况下,特征列概率已知,求解目标列每个值的概率。
 &emsp这里涉及几个概率论中的知识点,首先是朴素贝叶斯中“朴素”两个字的概念,朴素”表示的是一种比较理想的环境,就是特征数据之间彼此独立。例如有两个特征分别是m和n,P(m)表示 m发生的概率,那么 P(mn)表示 m 和n同时发生的概率、当m和"独立的情况下:P(mn)=P(m)xP(n)。下面再看下“条件概率”的含义,P(A|B)(见图5)是指当事件 B发生的情况下,事件A发生的概率。
在这里插入图片描述
根据概率论的概念可得:
在这里插入图片描述
其实根据图 5 可以得出如下公式也是成立的。
在这里插入图片描述
也就是说通过 P(A∩B)这个两个概率图交叉的媒介,可得到
在这里插入图片描述
贝叶斯定理的最终公式为
在这里插入图片描述
  其中、P(A)是A的先验概率,因为在计算 P(A)的时候不考虑 B的影响。P(A|B)称为A的后验概率,因为这个概率中 A的概率计算是在 B已经发生了的基础上。实际上在做分类的时候,场景可以抽象为已知一条数据的特征,预测这条数据的目标结果概率,P(目标结果概率|特征 )。下面通过一个案例对朴素贝叶斯进行推导。

2.算法推导

前面介绍了贝叶斯公式是如何推导的,得到

在这里插入图片描述
  看一下如何通过这个公式进行分类,用一个生活中的例子来描述贝叶斯算法分类的过程,我们的场景是判断一个女生是否接受男生约会的邀请,前提是女生知道男生的身高以及男生是否拥有房产。这个场景下的数据集见表

身高/cm是否有房是否约会
180约会
160没房不约会
160不约会
170约会
180没房约会

  在这个数据集中,“身高”和“是否有房”是两个特征项,“是否约会”是目标列。我们希望通过贝叶斯算法,当已知一个男士的“身高”和“是否有房”这两个特征数据之后判断他约会成功的概率。假设有一个男士M的身高是180,没有房产,现在来预测M约会成功的概率。根据贝叶斯公式,最终要计算的是男士M的后验概率,这个后验概率是通过他的“身高”和“是否有房”两个前提条件得到的。公式为

在这里插入图片描述

把A看作“约会”,B看作“身高 180”和“没有房”。通过公式表示为
在这里插入图片描述
鑫朴素贝叶斯定理中、前提条件是特征彼此独立。根据上面一个小节所介绍的特征独立的公式 P(mn)=P(m)xP(n),可以将公式变形为

在这里插入图片描述
这时可以发现,上面的式子中的右侧所有乘机因子都是可以通过历史数据求解得到的。下面来逐个求解这些因子。

  • P(身高180|约会):表示的是在成功约会的人中,身高180cm 的人占的比例。我们从总的数据集中提取成功约会人员的数据(见表)。
身高/cm是否有房是否约会
180约会
170约会
180没房约会

从上面的表格里看到,约会成功的人中身高180cm的比例是 2/3。

  • P(没有房|约会):跟上面同样的道理,约会成功的人中没有房的概率是 113。
  • P(约会):一共5个人,3个人约会成功,所以P(约会)=315。
  • P(身高180):身高是180cm的概率为2/5。
  • P(没有房):没有房的概率为 2/5。

把上面这些求解的概率因子带入可得

在这里插入图片描述

  通过上面的结果,我们就可以推断出身高180cm 的男士即使没有房产,约会成功的概率也是非常高的,这就解决了一个“约会成功”或“约会不成功”这样的二分类问题。通过这个例子的推导,我们就了解了如何通过朴素贝叶斯定理来进行分类。

3.工程实现

  前面介绍了朴素贝叶斯分类器的实现原理以及推导过程,这一小节将介绍如何在工程上实现朴素贝叶斯分类器。朴素贝叶斯常被用作对文本类的数据进行分类,常见的有新闻分类或是垃圾邮件过滤。在处理文本数据的时候,其主要原理是通过发现每一个类别的文本可能出现的关键词的概率,然后通过这种概率计算后验概率。
  在这里采用开源的一款朴素贝叶斯分类器来实现,具体的源码可以参考https://github.com/muatik/naive-bayes-classifer,代码可读性非常好,建议充分阅读一遍,可以加深对贝叶斯算法的认识。
  1)安装贝叶斯分类器。本实验的实验环境是 MacOS 系统,Python 2.7的环境下,首先安装贝叶斯分类器的代码包:

sudo pip install naiveBayesClassifier

  2)文本数据集。这里有一组数据集,为了文本分词方便起见,使用的是英文语料(中文分词原理可以参考下文马尔科夫的实现)。数据集有两类文本,分别是“health”和“politics”两种。数据源包含两个字段,特征列是“text”,目标列是“category”。

newsSet =[
i'text': 'not to eat too much is not enough to lose weight','category' : 'health' }
i'text':'Russia try to invade Ukraine','category': 'politics'},
{'text': 'do not neglect exercise','category': "health'},
('text':'Syria is the main issue, Obama says', 'category': 'politics'),
{'text': 'eat to lose weight','category': "health'},
{'text':'you should not eat much','category': "health'}
]

  3)利用贝叶斯算法分类。

from naiveBayesClassifier import tokenizer
from naiveBayesClassifier.trainer import Trainer
from naiveBayesclassifier,classifier import Classifier
newsTrainer = Trainer(tokenizer)
newsSet =[
{'text': 'not to eat too much is not enough to lose weight', 'category': 'health'},
('text':'Russia try to invade Ukraine', 'category': 'politics'},
{'text':'do not neglect exercise','category': 'health'),
('text':'Syria is the main issue, Obama says', 'category': 'politics'),
('text':'eat to lose weight','category': 'health'},{'text':'you should not eat much','category': 'health'}
]
for news in newsSet:newsTrainer.train(news['text'],news['category'])
newsClassifier=Classifier(newsTrainer.data, tokenizer)
classification =newsClassifier.classify("eat more, you will become fatter")
print(classification)

  因为贝叶斯分类算法是监督学习,所以首先通过 train 函数输入特征列和目标列,训练生成分类模型 newsClassifer,接着就可以通过这个分类模型对预测样本“eat more,youwil become fatter”进行预测,最终得到的预测结果是这句话归于“health”或是“politics”
  贝叶斯分类理论是基于概率的一种分类算法。最终结果返回了预测集属于“health"或是“politics”两种类别各自的概率。结果已经表明了“eat more,you wil become fatter”这句话属于“health”类别的概率较大。具体的算法流程是通过比对预测集每个词在不同种类的训练样本中出现的频率大小来综合判断的。正是基于这种条件概率的算法推导方式,使得贝叶斯分类在文本分类场景下得到了广泛的应用,在处理垃圾软件过滤和黄色文本过滤方面都有着不错的效果。
以上主要是对朴素贝叶斯分类的算法理论进行了介绍。通过上文的介绍,我们可以了解朴素贝叶斯的分类原理是基于概率论的条件概率公式,比较容易理解,而且在很多场景下具有比较好的性能。同时,因为输出结果是概率值,朴素贝叶斯可以很容易地从二分类场景扩展到多分类场景中去,这个特性也是贝叶斯分类算法比较好的特性。如果想更深入地了解贝叶斯算法的更多场景和其他扩展算法,可以多浏览相关的论文文献,建议阅读一些比较成熟的开源项目源码。


结束语🥇

以上就是机器学习
持续更新机器学习教程,欢迎大家订阅系列专栏🔥机器学习
你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

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

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

相关文章

【C语言报错已解决】Format String Vulnerability

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 在日常开发中&#xff0c;我们经常会遇到各种各样的bug&#xff0c;其中格式化字符串漏洞报错可能是最让人头疼的一种。这…

基于SpringBoot+Vue的地方美食分享网站(带1w+文档)

基于SpringBootVue的地方美食分享网站(带1w文档) 人类的进步带动信息化的发展&#xff0c;使人们生活节奏越来越快&#xff0c;所以人们越来越重视信息的时效性。以往的管理方式已经满足不了人们对获得信息的方式、方便快捷的需求。即地方美食分享网站慢慢的被人们关注。 项目简…

Redis集群启动步骤

前提&#xff1a;处理好配置文件。 一、通过配置文件启动三个Redis实例。 执行命令&#xff1a;redis-server /opt/redis/cluster/16381/16381.conf 二、因为 Redis 集群至少需要 3 个主节点。所以这三个都是主节点&#xff0c;暂不考虑从节点。 创建一个包含 3 个主节点的…

全网最适合入门的面向对象编程教程:27 类和对象的Python实现-Python中异常层级与自定义异常类的实现

全网最适合入门的面向对象编程教程&#xff1a;27 类和对象的 Python 实现-Python 中异常层级与自定义异常类的实现 摘要&#xff1a; 本文主要介绍了在使用 Python 进行面向对象编程时&#xff0c;异常的层级和如何使用继承关系完成自定义自己项目中异常类&#xff0c;并以传…

刷题了:144.二叉树的前序遍历心|145.二叉树的后序遍历心|94.二叉树的中序遍历己

递归遍历 文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html#%E6%80%9D%E8%B7%AF 视频讲解:https://www.bilibili.com/video/BV1Wh411S7xt/?spm_id_from333.788&vd_sourcee70917aa6392827d1ccc8d85e1…

【Websim.ai】一句话让AI帮你生成一个网页

【Websim.ai】一句话让AI帮你生成一个网页 网站链接 websim.ai 简介 websim.ai接入了Claude Sonnet 3.5&#xff0c;GPT-4o等常用的LLM&#xff0c;只需要在websim.ai的官网指令栏中编写相关指令&#xff0c;有点类似大模型的Prompt&#xff0c;指令的好坏决定了网页生成的…

全网最全robotframework自动化测试环境搭建

一、前言 1、在2019年之前&#xff0c;robotframework-ride的版本一直是1.5.2.1&#xff0c;是2016年1月份的版本&#xff0c;只能安装在python2.7的环境上&#xff0c;导致如果想同时使用robotframework做测试且又需要python3环境编写python代码的小伙伴都需要在操作系统上安…

Open3D 计算去质心后的点云

目录 一、概述 1.1原理 1.2实现步骤 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2处理后点云 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSDN博客 一、…

linux运维脚本编写

目录 步骤1 系统基本信息的检查 步骤2 文件系统和磁盘信息的检查 步骤3 内存、cpu、进程信息的检查 1、内存信息检查 2、cpu信息检查 3、进程信息检查 步骤4 其他脚本 正文部分✌ 步骤1 系统基本信息的检查 巡检脚本 步骤2 文件系统和磁盘信息的检查 具体实现的shell脚本如…

NebulaGraph图数据库使用教程

一、NebulaGraph 是什么&#xff1f; NebulaGraph 是一款开源的图数据库&#xff0c;擅长处理千亿个顶点和万亿条边的超大规模数据集。 NebulaGraph 社区已成长为一个荟聚了众多用户、融合了各类图技术场景实践知识的活跃开源社区。你可以在其中与大家共同交流 NebulaGraph 周…

音视频开发入门很难?可能是你姿势不对

作为程序员&#xff0c;听到最烦的两个词一个是bug&#xff0c;在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「音视频开发的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大…

【书生大模型实战】L1-书生大模型全链路开源体系

一、关卡任务 观看本关卡视频后&#xff0c;写一篇关于书生大模型全链路开源开放体系的笔记。 视频链接&#xff1a;【书生浦语大模型全链路开源体系】 https://www.bilibili.com/video/BV1Vx421X72D/?share_sourcecopy_web 二、实验过程 书生浦语大模型全链路开源体系&am…

银行贷款信用评分不足?大数据帮你找回失去的“分”

在这个信息爆炸的时代&#xff0c;无论是个人还是企业&#xff0c;数据都成为了衡量信用和评估风险的重要依据。贷款、融资、求职甚至是日常消费&#xff0c;都可能因为一份好的数据报告而变得更加顺畅。那么&#xff0c;如何高效地查询自己的大数据&#xff0c;面对评分不足时…

【持续集成_02课_Jenkins+Git+Gogs综合应用】

https://www.cnblogs.com/xfeiyun/p/17510472.html Jenkins部署及持续集成——傻瓜式教程-腾讯云开发者社区-腾讯云 一、Jenkins安装 Jenkins由Java语言编写而成&#xff0c;安装包即是一个war包。因此&#xff0c;Jenkins的运行启动依赖于Java环境&#xff0c;同时&#xf…

G120 EPos配置方案及应用场景

EPos功能就是基本定位器功能,它可计算出轴的运行特性,使轴以时间最佳的方式移动到目标位置。EPos功能主要包括:设定值 直接给定(MDI)功能、 选择程序段功能、回参考点功能、点动功能、运行到固定挡块功能。 EPos功能通过处理给定的加速度、速度和位置值生成运行特性曲线,…

昇思 25 天学习打卡营第 15 天 | mindspore 实现 VisionTransformer 图像分类

1. 背景&#xff1a; 使用 mindspore 学习神经网络&#xff0c;打卡第 15 天&#xff1b;主要内容也依据 mindspore 的学习记录。 2. Vision Transformer 介绍&#xff1a; mindspore 实现 VisionTransformer 图像分类&#xff1b;VisionTransformer 论文地址 VisionTransfo…

Redis是多线程还是单线程?

文章目录 1、用户态和内核态2、阻塞IO3、非阻塞IO4、IO多路复用4.1 select4.2 poll4.3 epoll4.4 epoll中的ET和LT4.5 epoll的服务端流程 5、信号驱动6、异步IO7、对比8、Redis是单线程的吗&#xff1f;9、单线程多线程网络模型变更 1、用户态和内核态 1、ubuntu和Centos 都是Li…

day 02

作业&#xff1a; 1> 写一个日志文件&#xff0c;将程序启动后&#xff0c;每一秒的时间写入到文件中 1、2024- 7-29 10:31:19 2、2024- 7-29 10:31:20 3、2024- 7-29 10:31:21 ctrlc:停止程序 ./a.out 4、2024- 7-29 10:35:06 5、2024- 7-29 10:35:07 6、2024- 7-29 10:3…

轻松入门Linux—CentOS,直接拿捏 —/— <2>

一 、权限问题详细讲解 读写的权限可以分别写成 r, w, x 总共有九个权限&#xff0c;可以分组三大组分别是&#xff1a; user&#xff1a;当前文件所属用户的权限 group&#xff1a;与当前文件所属用户同一组的用户权限 others&#xff1a;其他用户的权限 故使用 u, g, o 来代表…

从装机到冯·诺依曼架构,揭秘计算机的硬件组成

在当今数字化的时代&#xff0c;计算机已经成为我们生活和工作中不可或缺的一部分。从日常办公到科学计算&#xff0c;从畅玩游戏到无人驾驶&#xff0c;计算机简直无所不能。而这一切的背后&#xff0c;离不开其精密而复杂的硬件组成。今天&#xff0c;我们将一起探索计算机的…